@delnan спасибо, это все объясняет.

жный дубликат:
«Наименьшее удивление» в Python: изменчивый аргумент по умолчанию

Рассмотрим следующую функцию:

def foo(L = []):
  L.append(1)
  print L

Каждый раз, когда я вызываю foo, он выводит новый список с большим количеством элементов, чем в прошлый раз, например:

>>> foo()
[1]
>>> foo()
[1, 1]
>>> foo()
[1, 1, 1]

Теперь рассмотрим следующую функцию:

def goo(a = 0):
  a += 1
  print a

При вызове его несколько раз мы получаем следующую картину:

>>> goo()
1
>>> goo()
1
>>> goo()
1

то есть он не печатает большее значение при каждом вызове.

В чем причина такого, казалось бы, противоречивого поведения?
Кроме того, как можно оправдать нелогичное поведение в первом примере, почему функция сохраняет состояние между вызовами?

Ответы на вопрос(1)

Ваш ответ на вопрос