1.0Kпросмотров
40.2%от подписчиков
19 января 2026 г.
Score: 1.1K
Все знают синтаксический сахар с операторами +=, -= и тд
x += 1
Где под капотом он превращается в x = x + 1
Останется ли переменная х той же переменной после +=?
Конечно нет, это же неизменяемый тип
x = 1
print(id(x))
# 135373664533280
x += 1
print(id(x))
# 135373664533312 Теперь провернём тоже самое со списком
ls = [1, 2]
print(id(ls))
# 135373622585344
ls = ls + [3]
print(id(ls))
# 135373619036608
Ожидаемо работает так же, ведь мы создали новую переменную.
А теперь попробуем иначе:
ls = [1, 2]
print(id(ls))
# 135373622585344
ls += [3]
print(id(ls))
# 135373622585344
print(ls)
# [1, 2, 3]
И, внезапно, это работает не так как с int, со списками оператор += работает как extend()!
То же самое будет с =, объект останется тем же.
ls = [1, 2]
print(id(ls))
# 135373622585344
ls = 2
print(id(ls))
# 135373622585344
print(ls)
# [1, 2, 1, 2]
Следует помнить о такой важной разнице! (Особенно на собесах 😉) #tricks