2011-01-20 3 views
3

Я в настоящее время с помощью singpath.com практиковать свой питона, но я сталкиваюсь проблема с проблемой:Python: TypeError: занимает ровно 1 аргумент (2 дано)

Ожидаемый результат:

>>>CurryPuff(3) 
3.60 
>>>CurryPuff(3,'Fish') 
4.2 

Это то, что я пробовал:

def CurryPuff(x,typePuff): 

    if(typePuff==''): 

     return x*1.2 

    if(typePuff=='Fish'): 

     return x*1.4 

Но это дает мне эту ошибку:

TypeError: CurryPuff() takes exactly 2 arguments (1 given) 

Я попробовал поиск по сайту, но я не очень уверен, что это ключевое слово для использования, поэтому, надеюсь, вам поможет помощь здесь.

Спасибо.

ответ

16

Вы не можете вызвать функцию с 1 аргументом, если она ожидает 2, как CurryPuff(). Тем не менее, вы можете определить аргумент по умолчанию, который используется, если аргумент не передается:

def CurryPuff(x, typePuff=None): 
    if typePuff is None: 
     # and so on... 

Вы можете сделать это с любым значением для любого аргумента. Вы можете опустить аргументы, если определено значение по умолчанию.

+2

+1, но вы можете добавить, что вам нужно поставить позиционные аргументы (те, у которых значение по умолчанию), перед любыми аргументами ключевого слова (значения со значением по умолчанию). 'def CurryPuff (typePuff = None, x):' будет недействительным. –

+0

@ Тит, что я не знал об этом. Спасибо за немного знаний. –

Смежные вопросы