По шагам:
1️⃣На первой строке создаётся пустой список 𝚡 = []. Пустые коллекции в Python имеют ложное булево значение, то есть 𝚋𝚘𝚘𝚕(𝚡) = 𝙵𝚊𝚕𝚜𝚎.
2️⃣Выражение 𝚢 = 𝚡 𝚘𝚛 [𝟷, 𝟸] работает по правилу: оператор 𝚘𝚛 возвращает первый операнд, если он истинный, иначе второй. Так как 𝚡 — пустой список (ложное значение), результатом становится второй операнд — список [𝟷, 𝟸], и именно он присваивается переменной 𝚢.
3️⃣Далее вычисляется 𝚣 = 𝚡 𝚊𝚗𝚍 [𝟹, 𝟺]. Для 𝚊𝚗𝚍 правило обратное: возвращается первый ложный операнд, а если оба истинные — второй. Поскольку 𝚡 — ложное значение, короткое замыкание срабатывает сразу, второй операнд не вычисляется, и в 𝚣 попадает тот же пустой список [].
4️⃣Вызов 𝚙𝚛𝚒𝚗𝚝(𝚢, 𝚣) печатает строковое представление двух объектов через пробел: сначала список [𝟷, 𝟸] как [1, 2], затем пустой список как [], поэтому итоговая и единственная строка вывода — [1, 2] [].
Чему нас учит эта задачка: логические операторы 𝚊𝚗𝚍 и 𝚘𝚛 в Python возвращают один из операндов, а не обязательно булево значение, и активно используют правду/ложь контейнеров (пустой список, пустая строка и т.п.), что полезно и для удобного задания дефолтных значений, и для лаконичных проверок.
Post #4512
752
- ✍ 4
- ❤ 1
- 👍 1