Применение оператора присваивания в условии if

Тело if выполнится, а x будет равно 1. Оператор := сначала присваивает результат data.get('a') переменной x, затем условие проверяет истинность этого результата.

Короткий ответ

Что ответить на собеседовании

Тело if выполнится, а x будет равно 1. Оператор := сначала присваивает результат data.get('a') переменной x, затем условие проверяет истинность этого результата.

Подробный разбор

Ответ с пояснениями

Условие

Определите, выполнится ли тело блока if и какое значение будет записано в переменную x после выполнения следующего кода.

data = {'a': 1}
if x := data.get('a'):
    pass

Ответ

Тело if выполнится, а x будет равно 1. Оператор := сначала присваивает результат data.get('a') переменной x, затем условие проверяет истинность этого результата.

Оператор присваивания-выражения не превращает результат в bool: x остаётся целым числом 1. Сам блок ничего не делает, поскольку содержит pass.

Если значение ключа было бы 0, пустой строкой или None, x получил бы это значение, но тело if не выполнилось бы. Для проверки именно отсутствия None пишут:

if (x := data.get('a')) is not None:
    pass

Так можно отличить допустимый ноль от отсутствующего значения, если None выбран признаком отсутствия.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее