Найти - Пользователи
Полная версия: Помощь новичку
Начало » Python для новичков » Помощь новичку
1
RaZoR0987
Недавно начал изучать python, и вот возник такой вопрос.
Есть следующий код:
 def total(initial, *numbers, extra_number):
    count = initial
    for number in numbers:
        count += number
        count += extra_number
    print(count)
total(10, 1, 2, 3, extra_number=50)
Объясните пожалуиста что означают звездочки, что они делают. И вообще весь код что делает? Кто может объяснить?
Заранее Спасибо!!
Ещё этот код есть, тоже не понимаю.
 def total(initial=5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
print(total(10, 1, 2, 3, vegetables = 50, fruits = 100))
py.user.next
  
>>> def f(a, b, *c, **d):
...     print(a)
...     print(b)
...     print(c)
...     print(d)
... 
>>> f(1, 2, 3, 4, 5, n1=6, n2=7, n3=8)
1
2
(3, 4, 5)
{'n1': 6, 'n2': 7, 'n3': 8}
>>>
Rafik
Одна звёздочка создаёт из “лишних” позиционных аргументов кортеж, а две звёздочки из именованных аргументов создаёт словарь. Т.е. звёздочки сворачивают (упаковывают) аргументы.
В примере от py.user.next f принимает только два позиционных аргумента a и b, остальные от 3 до 5 аргумент *с упаковывает в кортеж. **d упаковывает все именованные аргументы в словарь, где ключом являются имена аргументов.
Кстати, если звездочки используются при вызове какой-либо функции, то передаваемая последовательность распакуется в отдельные позиционные аргументы, а словарь распакуется в именованные
 def f(a,b,c,d,n1=1, n2=2, n3=3):
    print(a)
    print(b)
    print(c)
    print(d)
    print(n1)
    print(n2)
    print(n3)
x = (3, 4, 5)
y = {'n1': 6, 'n2': 7, 'n3': 8}
f(2, *x, **y)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB