可能重复:
“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仍然没有看到这个逻辑。
有人可以启发我吗?