Поведение изменяемого и неизменяемого объекта в функциях 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"? Благодарю.

0 ответов

Другие вопросы по тегам