混淆python中的变量范围

时间:2013-01-26 16:29:49

标签: python scope

  

可能重复:
  “Least Astonishment” in Python: The Mutable Default Argument

我试图在SO或python中找到答案,但无法获得参考。

import random 

def test(headers=[('Application','Value')]):
    print headers
    headers.append(('Random',random.randint(0,100)))
    print headers


test()
test()
test()

我一直得到这个输出

[('Application', 'Value')]
[('Application', 'Value'), ('Random', 8)]
[('Application', 'Value'), ('Random', 8)]
[('Application', 'Value'), ('Random', 8), ('Random', 46)]
[('Application', 'Value'), ('Random', 8), ('Random', 46)]
…………

当我运行此代码时,似乎python保存标头的值,即使它是一个函数参数。我来自Java,.NET和PHP仍然没有看到这个逻辑。

有人可以启发我吗?

0 个答案:

没有答案