Развёрнутое пояснение
1️⃣Список [𝚃𝚛𝚞𝚎, 𝚙𝚛𝚒𝚗𝚝("𝚌𝚑𝚎𝚌𝚔", 𝚎𝚗𝚍=" "), 𝚃𝚛𝚞𝚎] вычисляется слева направо при создании.
2️⃣Вызов 𝚙𝚛𝚒𝚗𝚝("𝚌𝚑𝚎𝚌𝚔", 𝚎𝚗𝚍=" ") печатает check (с пробелом вместо переноса строки) и возвращает 𝙽𝚘𝚗𝚎 — все функции без явного 𝚛𝚎𝚝𝚞𝚛𝚗 возвращают 𝙽𝚘𝚗𝚎.
3️⃣Список превращается в [𝚃𝚛𝚞𝚎, 𝙽𝚘𝚗𝚎, 𝚃𝚛𝚞𝚎].
4️⃣Функция 𝚊𝚕𝚕() проверяет истинность всех элементов. Первый элемент 𝚃𝚛𝚞𝚎 — истинный, второй 𝙽𝚘𝚗𝚎 — ложный, поэтому 𝚊𝚕𝚕() сразу возвращает False.
5️⃣Переменная 𝚛𝚎𝚜𝚞𝚕𝚝 получает False, и печатается check (из 𝚙𝚛𝚒𝚗𝚝), а затем False.
Почему это важно
Встраивание функций с побочными эффектами в проверки 𝚊𝚕𝚕() или 𝚊𝚗𝚢() может давать неожиданный результат, если функция возвращает 𝙽𝚘𝚗𝚎 или другое falsy-значение.
Post #4661
764
- ✍ 3