← Все вопросы
Почему or возвращает не bool, а одно из значений?
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
Ваш ответ
, чтобы ответить на вопрос.