← Все вопросы

Как работает множественное присваивание a = b = 0 в Python?

Задан 2 месяца назад498 просмотров3 ответа
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 — это другое, тут разные значения по позициям.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект