В чем разница между этим:
def total(initial=10, *numbers, **keywords):
count = initial
for fake in numbers:
count = count + fake
for key in keywords:
count = count + keywords[key]
return count
print total(10, 5, fruits=10)
и этим:
def total(initial=10, *numbers, **keywords):
count = initial
for fake in numbers:
count = count + fake
for key in keywords:
count = count + key
return count
print total(10, 5, fruits=10)
То, что я не получаю, это то, что в 1-й программе она принимает ключевые слова и в Вторая программа, я продолжаю получать сообщения об ошибках по ключевым словам !!
Существует только единственное изменение между двумя фрагментами кода, первым использованием:
count = count + keywords[key]
, в то время как второй использует:
count = count + key
В случае первого Вы принимаете значение ключа словаря и затем добавляете значение к предыдущему количеству.
, В то время как во втором случае Вы добавляете ключ сама (строка) к целочисленному количеству, которое дает ошибку как и следовало ожидать.
Это сделает Вас более ясными:
#!/usr/bin/env python2
def total(initial=10, *numbers, **keywords):
count = initial
for fake in numbers:
count = count + fake
for key in keywords:
print 'key is: ' + key
print 'keyword is: ' + str(keywords)
count = count + keywords[key]
return count
я добавил две строки для проверки значений, к которым мой вход интерпретируется как.
Теперь, когда я работаю:
print total(10, 5, fruits=10)
это дает:
key is: fruits
keyword is: {'fruits': 10}
25
я предложил бы, чтобы Вы пошли хотя основное типы данных используемый в python
.