Предположим, что функция с изменяемым аргументом по умолчанию:
def f(l=[]):
l.append(len(l))
return l
Если я запущу это:
def f(l=[]):
l.append(len(l))
return l
print(f()+["-"]+f()+["-"]+f()) # -> [0, '-', 0, 1, '-', 0, 1, 2]
Или это:
def f(l=[]):
l.append(len(l))
return l
print(f()+f()+f()) # -> [0, 1, 0, 1, 0, 1, 2]
Вместо следующего, который был бы более логичным:
print(f()+f()+f()) # -> [0, 0, 1, 0, 1, 2]
Почему?