Я открыл свой интерпретатор 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
Это спрашивает много - см [ «изумление» Наималейшее в Python: Мутабельный аргумент по умолчанию] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python -the-mutable-default-argument) –
Эти вопросы всегда закрываются * SO FAST *. Это впечатляет. – mgilson