可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
在下面的代码中,输出应该不是6 6 7 6但是实际输出非常不同,如下所述
i=5
def fs(args=i):
print args
print i
i=6
fs()
fs(7)
Actual Output is 5 6 7 6
答案 0 :(得分:7)
代码args=i
在函数定义时运行,而不是在函数调用时运行。
当您定义该函数时,i
的值为5.这意味着args
的默认值将始终为5,即使您稍后将i
的值更改为6。