0
我打開了我的python解釋器,編碼並運行以下函數。爲什麼我的函數不斷返回一個更長的列表?
>>> def crazy_function(my_list=[]):
... my_list.append(0)
... return my_list
...
>>> crazy_function()
[0]
>>> crazy_function()
[0, 0]
>>> crazy_function()
[0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0, 0, 0]
>>>
這是怎麼回事?爲什麼函數返回的列表越多,我稱之爲函數的時間越長?每次調用函數時都不應創建新的本地列表?
蟒蛇成立:d – dangerChihuahua007 2013-02-11 02:09:59
這個被問了很多 - 參見[Python中的「最小驚訝」:易變的默認參數(http://stackoverflow.com/questions/1132941/least-astonishment-in-python -the-mutable-default-argument) – 2013-02-11 02:10:30
這些問題總是會關閉* SO FAST *。這令人印象深刻。 – mgilson 2013-02-11 02:12:22