Python 3. Объект списка, являющийся необязательным параметром функции, не удаляется после завершения работы функции
Недавно начал изучать Python-3 и столкнулся с таким интересным поведением работы функций.
Пример:
def foo(x=[]):
x.append(1)
print x
foo()
foo()
foo()
Результат:
[1]
[1, 1]
[1, 1, 1]
То есть, объект списка не удаляется после завершения работы функции, как это происходит с другими объектами.
Причем, если список будет являться обязательным параметром функции, то, он, как и положено, будет удален по завершении работы функции.
Стало интересно, это баг или фича Питона? Буду благодарен за разъяснения. Погуглил, не нашел ответа на других ресурсах...