В ветку Python 3.15.0a8 (релиз ожидается на следующей неделе) внезапно добавили механизм Boolean Enforcement, который вызвал бурю обсуждений в почтовой рассылке core-разработчиков.
Что меняется:
Интерпретатор теперь будет выдавать
RuntimeWarning, если вы используете «неявное» приведение к bool в условиях. Пример «устаревшего» кода:
items = []
if not items: # Теперь это вызовет Warning: "Implicit empty list evaluation"
print("Empty")
Как нужно писать теперь (Strict Style):
if len(items) == 0: # Официально одобренный синтаксис
print("Empty")
Гвидо ван Россум в своем блоге пояснил, что это первый шаг к отказу от философии «Duck Typing» в пользу «Explicit Logic». По его словам, это позволит JIT-компилятору оптимизировать байт-код на 0.04% быстрее, так как ему не нужно проверять магический метод
__bool__ у объектов в каждом if.Разработчики Django уже заявили, что им придется переписать около 400 000 строк кода, а автор библиотеки
Pydantic просто скинул в чат эмодзи с горящим домом и с 1 апреля!📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
