← Все вопросы
Как работает множественное присваивание a = b = 0 в Python?
13
Можно ли одной строкой обнулить несколько переменных: a = b = c = 0? И не получится ли, что они все станут «связанными», как бывает со списками?
3 ответа
27
✓ Принятый ответ — помог автору
Да, a = b = c = 0 работает — все три имени привязываются к одному объекту 0. Для неизменяемых значений (числа, строки) это абсолютно безопасно: как только сделаешь a = 5, a начнёт ссылаться на новый объект, а b и c останутся 0.
Проблема возникает ТОЛЬКО с изменяемыми объектами:
a = b = [] # один и тот же список!
a.append(1)
print(b) # [1] — оба изменились
Для списков пиши раздельно: a, b = [], [].
Nikita Hook Вот именно, для чисел бояться нечего, а вот = [] это грабли · 2 месяца назад
6
Работает. Для чисел и строк безопасно, для списков/словарей — нет.
4
Не путай с распаковкой a, b = 0, 1 — это другое, тут разные значения по позициям.
Ваш ответ
Войдите, чтобы ответить на вопрос.