Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2014 22:30:15

quaker
Зарегистрирован: 2013-07-13
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменное число параметров

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



Использую Python 3 + komodo edit )

Офлайн

#2 Март 5, 2014 23:03:39

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Переменное число параметров

Звездочки дают знать питону что надо ложить все аргументы в эту переменную переданные просто 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

Отредактировано Singularity (Март 5, 2014 23:04:13)

Офлайн

#3 Июнь 5, 2014 12:58:39

quaker
Зарегистрирован: 2013-07-13
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменное число параметров

Спасибо, теперь в голове стало всё на свои места



Использую Python 3 + komodo edit )

Офлайн

#4 Июнь 5, 2014 13:27:49

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Переменное число параметров

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version