Родриго Серран разобрал в своём блоге пять нововведений Python 3.15, которые ему кажутся самыми интересными. Собрали их суть.
Ленивые импорты (PEP 810). Появилось ключевое слово lazy: помеченный модуль не загружается, пока имя реально не понадобилось. Отличный способ ускорить медленный старт приложения, особенно с тяжёлыми зависимостями.
lazy import json
lazy from math import sqrt
Встроенный frozendict (PEP 814). Неизменяемый и хешируемый словарь. Поменять или удалить ключ нельзя, прилетит TypeError, зато его можно использовать как ключ другого словаря или элемент множества.
version_info = frozendict({"major": 3, "minor": 15, "patch": 0})
version_info["patch"] += 1 # TypeError
Встроенный sentinel (PEP 661). Именованные заглушки, которые невозможно спутать с нормальными значениями вроде None. Удобно, когда None это валидный аргумент, а отличить «не передано» всё равно нужно. Печатают своё имя и образуют собственный тип, так что аннотации остаются чистыми.
NOTHING = sentinel("NOTHING")
if find_and_return(dataset, filter_function) is NOTHING:
print("Никто не подошёл под условие")
Распаковка внутри comprehension (PEP 798). Теперь звёздочку можно использовать прямо в list, dict, set и генераторных выражениях. Нового поведения не добавляет, но заменяет вложенные циклы на короткую строку.
flat = [*sub for sub in nested]
Профайлер Tachyon (PEP 799). Высокочастотный сэмплирующий профайлер прямо в стандартной библиотеке: до миллиона замеров в секунду. Может профилировать скрипт или подключаться к уже запущенному процессу с минимальными накладными расходами.
python -m profiling.sampling run script.py
python -m profiling.sampling attach 12345
Источник: https://mathspp.com/blog/the-5-most-exciting-new-features-of-python-315