Поведение изменяемого и неизменяемого объекта в функциях Python
Две части кода ниже дают разные результаты.
def f1(x= []):
x.append(1)
return x
print(f1())
print(f1())
Выход:
[1]
[1, 1]
И для второй функции:
def f2(x=0):
x+=1
return x
print(f2())
print(f2())
Выход:
1
1
Теперь я знаю, что это потому, что "1" имеет тип int и является неизменным (так же, как если бы я использовал кортеж). Я пытаюсь понять, как работает эта логика. В начале обеих функций вы находитесь в пространстве имен соответствующей функции, и у x есть назначенный ей объект. Почему только во втором случае он переназначается на "0"? Благодарю.