2011-01-20 73 views
3

我目前使用singpath.com練習我的蟒蛇,但我面對的一個問題一個問題:的Python:類型錯誤:恰恰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) 

我曾嘗試使用Google搜索,但我並不十分確定要使用什麼關鍵詞,所以希望能夠從這裏獲得幫助。

謝謝。

回答

16

如果期望2,則不能使用1參數調用函數,因爲CurryPuff()的確如此。但是,您可以定義在沒有參數傳遞時使用的默認參數:

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

你可以用任何參數的任何值做到這一點。如果定義了默認值,您只能省略參數。

+2

+1,但是您可能想要添加的是,您需要在任何關鍵字參數(具有默認值的參數)之前放置位置參數(那些沒有默認值的參數)。 `def CurryPuff(typePuff = None,x):`將是無效的。 – 2011-01-20 08:00:35

相關問題