Python - Несоответствующее поведение между «списком целых» и «int» во время операции присваивания - PullRequest
0 голосов
/ 26 апреля 2020

Разве операция присваивания не должна всегда создавать привязку между объектом и объектом?

По-видимому, это происходит для списков, но не для скалярного int. В приведенном ниже коде изменение значения новой переменной d приводит к изменению значения исходной переменной c.

c = [1,2]
d = c
d[0] = 3
print(d)
>>> [3,2]
print(c)
>>> [3,2]

Ожидается указанное выше поведение. Но в приведенном ниже коде изменение значения новой переменной b не приводит к изменению значения исходной переменной a. т. е. не должен ли вывод print(a) быть 2?

a = 3
b = a
b = 2
print(b)
>>> 2
print(a)
>>> 3
...