Форум сайта python.su
0
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))
Офлайн
75
Звездочки дают знать питону что надо ложить все аргументы в эту переменную переданные просто 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
num = range(10) for x in num: print x
Отредактировано Singularity (Март 5, 2014 23:04:13)
Офлайн
0
Спасибо, теперь в голове стало всё на свои места
Офлайн
88
Офлайн