Найти - Пользователи
Полная версия: Переменное число параметров
Начало » Python для новичков » Переменное число параметров
1
quaker
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=10))

Здравствующие уважаемые формучане. Я не могу понять в данном примере для чего нужны * и почему в операторе for есть слово number и как оно связано с numbers
Singularity
Звездочки дают знать питону что надо ложить все аргументы в эту переменную переданные просто total(1,2,3,4,5) будут в numbers, а как total(а=1,b=2,c=3,d=4,f=5) они будут сохранены в словарь keywords. Причем их можно комбинировать и сами имена не важны.
def f(*l,**d):
    print "list ->", l
    print "dict ->", d
>>>f(1,2,4,5)
list -> (1, 2, 4, 5)
dict -> {}
>>>f(1,2,4,5, f="fssfds",ff=33)
list -> (1, 2, 4, 5)
dict -> {'ff': 33, 'f': 'fssfds'}
# А тут шестерка после аргументов которые передаются по ключу - это не правильно
 >>>f(1,2,4,5, f="fssfds",ff=33,6)
  File "<ipython-input-5-e223c56a5547>", line 1
    f(1,2,4,5, f="fssfds",ff=33,6)
SyntaxError: non-keyword arg after keyword arg

number и numbers связаны также как x и num
num = range(10)
for x in num:
     print x

quaker
Спасибо, теперь в голове стало всё на свои места
Shaman
http://python.su/forum/topic/24141/
мда…
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