2011-01-20 70 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

相关问题