是否可以在Python 3中为变量参数列表设置默认值?
类似的东西:
def do_it(*args=(2, 5, 21)):
pass
我想知道变量参数列表的类型为tuple
,但这里没有接受元组。
答案 0 :(得分:5)
如果不是语法上的话,那么取决于你想要的行为:
def do_it(*args):
if not args: args = (2, 5, 21)
或
def do_it(a=2, b=5, c=21, *args):
args = (a,b,c)+args
应该这样做。
答案 1 :(得分:1)
初始化这样的列表通常不是一个好主意。
默认值仅评估一次。当默认值是可变对象(如列表,字典或大多数类的实例)时,这会有所不同。例如,以下函数累积在后续调用
上传递给它的参数def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
rint f(3)
这将打印
[1]
[1, 2]
[1, 2, 3]
我通常检查传入的内容,如果没有,则在函数体中初始化它。