Развёрнутое пояснение
1️⃣Создаётся объект 𝚋𝚊𝚐 с пустым списком 𝚒𝚝𝚎𝚖𝚜 = [].
2️⃣При проверке 𝚒𝚏 𝚋𝚊𝚐 Python сначала ищет __𝚋𝚘𝚘𝚕__ — его нет. Затем ищет __𝚕𝚎𝚗__ — тоже нет.
3️⃣Если ни один из методов не определён, объект считается truthy по умолчанию (он же существует!).
4️⃣Поэтому условие истинно и печатается full, хотя 𝚋𝚊𝚐.𝚒𝚝𝚎𝚖𝚜 пуст.
Почему это важно
Многие ожидают, что 𝚒𝚏 𝚋𝚊𝚐 проверит содержимое, но Python не «заглядывает» внутрь объекта автоматически. Пустой список — falsy, но объект, содержащий пустой список — truthy. Чтобы получить ожидаемое поведение, нужно явно добавить __𝚕𝚎𝚗__ или __𝚋𝚘𝚘𝚕__, либо проверять 𝚒𝚏 𝚋𝚊𝚐.𝚒𝚝𝚎𝚖𝚜.
Post #4591
862
- 🔥 6
- ❤ 3