JuniorКодЧастоЕщё не отвечали
Что выведут эти выражения or / and?
Предскажите все три строки.
print([] or "default") # (1)
print(0 or 5 or 10) # (2)
print("a" and "b" and "") # (3)
Определите вывод и объясните.
(1) default — or возвращает первый истинный операнд (пустой список ложен). (2) 5 — первое истинное значение. (3) '' — and возвращает первый ложный операнд или последний, если все истинны. or/and возвращают один из операндов, а не bool — основа идиомы x = val or default.
- ✗Считать, что
or/andвсегда возвращают булево - ✗Думать, что они всегда возвращают первый операнд независимо от истинности
- ✗Не знать, что идиома
x = val or defaultопирается на это
- →Почему сокращённое вычисление возвращает операнд, а не bool?
- →В чём риск
x = val or default, когдаvalможет быть0или''?