函数参数Python的多个默认值

时间:2014-08-19 02:28:17

标签: python function parameters parameter-passing

如果我有一个具有如下函数的类,我希望有两个具有默认值的变量:

class item:
    def __init__(self, var1=1, var2=2)
        self.var1 = var1
        self.var2 = var2

我如何创建此类的实例并更改var2的值而不是var1

a = item(#Leave var1 alone, but set var2 to 'hello')

2 个答案:

答案 0 :(得分:1)

您只需将其实例化为:

# leave var1 as default
a = item(var2='hello')

# leave var2 as default
a = item(var1='hey')

# overwrite both var1 and var2
a = item(var1='hey', var2='hello')

# use both defaults
a = item()

评论中您的示例中要注意的是,必须现在提供var1,因为它没有默认值。因此item(var1=1, var3=2)item(1, var3=2)都会有效,而item(var3=2)则不会。当存在没有默认值的参数时,关键字参数也必须是最后一个,因此item(var3=2, 1)也不起作用,但item(var3=2, var1=1)会这样。

答案 1 :(得分:0)

实例化时使用命名参数:

a = item(var2=42)

这会将var1保留为默认值1,但会将var2设置为42。


以下脚本显示了这一点:

class item:
    def __init__(self, var1=1, var2=2):
        self.var1 = var1
        self.var2 = var2

a = item()
print a.var1
print a.var2

b = item(var2=42)
print b.var1
print b.var2

根据需要输出:

1
2
1
42