python函数带参数的奇怪行为

时间:2012-11-19 10:18:27

标签: python

  

可能重复:
  “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

1 个答案:

答案 0 :(得分:7)

代码args=i在函数定义时运行,而不是在函数调用时运行。

当您定义该函数时,i的值为5.这意味着args的默认值将始终为5,即使您稍后将i的值更改为6。