Python中变量参数列表的默认值
在Python3中是否可以为变量参数列表设置默认值 比如:Python中变量参数列表的默认值,python,function,arguments,Python,Function,Arguments,在Python3中是否可以为变量参数列表设置默认值 比如: def do_it(*args=(2, 5, 21)): pass 我想知道变量参数列表的类型是tuple,但这里不接受tuple。如果不是语法上的,那么取决于您想要的行为: def do_it(*args): if not args: args = (2, 5, 21) 或 我应该这样做 初始化这样的列表通常不是一个好主意 默认值仅计算一次。当默认值是可变对象(如列表、字典或大多数类的实例)时,这会有所不同。例如
def do_it(*args=(2, 5, 21)):
pass
我想知道变量参数列表的类型是
tuple
,但这里不接受tuple。如果不是语法上的,那么取决于您想要的行为:
def do_it(*args):
if not args: args = (2, 5, 21)
或
我应该这样做 初始化这样的列表通常不是一个好主意 默认值仅计算一次。当默认值是可变对象(如列表、字典或大多数类的实例)时,这会有所不同。例如,下面的函数累积在后续调用中传递给它的参数
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
rint f(3)
这会打印出来
[1]
[1, 2]
[1, 2, 3]
- 被盗自:
我通常会检查是否传入了某些内容,如果没有,则在函数体中初始化它。如果元组中的对象是不可变的,那么OP的示例是安全的,因为元组本身也是不可变的。你说得太对了。我在想元组不是的可变对象。谢谢你的更正。
[1]
[1, 2]
[1, 2, 3]