В чем разница между этими функциями Python?

В чем разница между этим:

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-й программе она принимает ключевые слова и в Вторая программа, я продолжаю получать сообщения об ошибках по ключевым словам !!

1
задан 24 May 2015 в 00:57

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.

0
ответ дан 24 May 2015 в 00:57

Другие вопросы по тегам:

Похожие вопросы: