Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中变量参数列表的默认值_Python_Function_Arguments - Fatal编程技术网

Python中变量参数列表的默认值

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) 或 我应该这样做 初始化这样的列表通常不是一个好主意 默认值仅计算一次。当默认值是可变对象(如列表、字典或大多数类的实例)时,这会有所不同。例如

在Python3中是否可以为变量参数列表设置默认值

比如:

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]