可能重複:
「Least Astonishment」 in Python: The Mutable Default Argument爲什麼在再次調用函數時這個字典不會被清空?
我工作的一本詞典時,我注意到,如果你有一個空的字典作爲函數的輸入,給它在功能上輸入後,下次該函數被調用時,字典不再爲空。我有麻煩解釋了我的意思,所以我希望下面的代碼段解釋了我的意思是:
>>> def test(input, dct={}):
... dct[input] = 'test'
... print dct
...
>>> test('a')
{'a': 'test'}
>>> test('b')
{'a': 'test', 'b': 'test'}
我的問題歸結爲:爲什麼在這個示例腳本,做試驗(「B」)時,不其打印
{'a':'test', 'b':'test'}
,而不是
{'b':test'}
請參閱[Python教程](http://docs.python.org/tutorial/controlflow.html#default-argument-values)中的「重要警告」。我們每週至少得到一次這個問題...... – 2012-03-22 14:53:33
對不起,我沒有找到它,我沒有搜索'在Python中最小的驚訝'或'可變的默認參數' – 2012-03-22 14:56:32
這裏有幾百個問題在SO上。事實經常表明,這似乎確實很難找到,但我不知道如何改善這種情況。 – 2012-03-22 15:02:25