← Все вопросы

Почему or возвращает не bool, а одно из значений?

Задан 2 месяца назад7 просмотров1 ответ
0

Знаю, что в Python or возвращает не True/False, а последний вычисленный операнд:

python x = 0 or 42 # 42 y = 0 or '' or 'hello' # 'hello' Я привык использовать это как "значение по умолчанию". Почему? Чем плох такой стиль и когда его лучше не использовать?

1 ответ

0

ага, or возвращает не True/False, а сам операнд — первый истинный, либо последний если все ложные. это short-circuit. как дефолт норм работает, но есть подвох: ложными считаются ещё и 0, '', [], None. то есть если 0 или пустая строка — это валидное значение, x = a or default их молча съест и подставит дефолт. надо ловить именно None → пиши явно: a if a is not None else default

Ваш ответ

, чтобы ответить на вопрос.