Развёрнутое пояснение
1️⃣Генератор 𝚐 создаёт последовательность из двух элементов: 𝟶 и 𝟷.
2️⃣Первый 𝚗𝚎𝚡𝚝(𝚐, "𝚎𝚖𝚙𝚝𝚢") извлекает 𝟶, переменная 𝚊 = 𝟶.
3️⃣Второй 𝚗𝚎𝚡𝚝(𝚐, "𝚎𝚖𝚙𝚝𝚢") извлекает 𝟷, переменная 𝚋 = 𝟷.
4️⃣Третий вызов 𝚗𝚎𝚡𝚝(𝚐, "𝚎𝚖𝚙𝚝𝚢"): генератор исчерпан, но передан второй аргумент — default-значение. Вместо исключения StopIteration возвращается "𝚎𝚖𝚙𝚝𝚢", переменная 𝚌 = "𝚎𝚖𝚙𝚝𝚢".
5️⃣Если бы был просто 𝚗𝚎𝚡𝚝(𝚐) без второго аргумента, выбросилось бы StopIteration.
Почему это важно
Это полезный паттерн для безопасной работы с итераторами неизвестной длины: 𝚗𝚎𝚡𝚝(𝚒𝚝𝚎𝚛𝚊𝚝𝚘𝚛, 𝙽𝚘𝚗𝚎) или 𝚗𝚎𝚡𝚝(𝚒𝚝𝚎𝚛𝚊𝚝𝚘𝚛, 𝚍𝚎𝚏𝚊𝚞𝚕𝚝_𝚟𝚊𝚕𝚞𝚎) позволяет избежать обработки исключений.
Post #4675
753
- ✍ 3