Python — современный язык программирования, который живёт и постоянно развивается. Недавно вышла версия Python 3.14, и мы решили посмотреть, что нового появилось в языке. Рассказываем об изменениях для веб-разработки, типизации, отладки и многого другого. В общем, что важно знать, если вы работаете с Python.
Супер-шаблоны (t-строки)
Что случилось: теперь можно создавать умные шаблоны с помощью приставки t
— например, t"Привет, {username}"
. Они не просто подставляют значения, но и запоминают, где именно вставлены переменные.
Зачем это: эти шаблоны — мечта для веба. Например, можно автоматически экранировать HTML-теги или строить SQL-запросы без риска взлома. Проще говоря — меньше ошибок, больше безопасности.
# Раньше нужно было вручную экранировать опасные символы
dangerous_code = "<script>alert('Ха-ха, вас взломали!')</script>"
template = t"<div>{dangerous_code}</div>"
def make_safe_html(template):
safe_parts = []
for part in template:
if isinstance(part, str):
safe_parts.append(part) # Просто текст? Оставляем как есть
else:
# Подозрительный кусок? Обезвреживаем!
safe_parts.append(str(part.value).replace("<", "<"))
return "".join(safe_parts)
print(make_safe_html(template)) # <div><script>...</script></div>
Интерпретатор стал добрее к опечаткам
Что случилось: раньше, если вы писали whille
вместо while
, Python просто ругался SyntaxError
. Теперь он подскажет: «Слушай, может, ты имел в виду 'while'?»
Зачем это: теперь учиться проще! Ошибки — как нормальные навигаторы с лагающим GPS: раньше они просто говорили «вы не там», а теперь показывают, куда свернуть.
s = set()
s.add({'key': 'value'}) # Раньше ошибка была непонятной
# Теперь сообщение чёткое:
# TypeError: нельзя использовать 'dict' как элемент множества (нехэшируемый тип)
Аннотации типов больше не тормозят
Что случилось: аннотации вроде def user(id: int) -> User:
больше не замедляют запуск кода. Python сохраняет их как текст и разбирает, только когда это нужно.
Зачем это: можно спокойно писать аннотации даже для сложных классов, не боясь циклов в импортах. Короче, больше никаких кавычек вокруг User
(наконец-то).
from annotationlib import get_annotations
def user(id: int) -> "User": # Кавычки больше не нужны!
# Получить аннотации можно через новую библиотеку annotationlib
print(get_annotations(user, format="STRING"))
# {'return': 'User', 'id': 'int'}
Быстрое сжатие данных (Zstandard)
Что случилось: в Питон встроили поддержку Zstandard — это как zip, но быстрее и лучше. Одной подключаемой сторонней библиотекой меньше.
Зачем это: представьте, что вы упаковываете чемодан за 5 секунд вместо минуты. Вот так Zstandard сжимает данные.
from compression import zstd
data = b"Python крут! " * 1000 # 1000 раз повторяем фразу
squashed = zstd.compress(data) # Сожмём до крохотного размера
print(f"Ужали в {len(squashed)/len(data):.0%}") # Пример: 25% от оригинала!
Ловить ошибки стало немного проще
Что случилось: теперь не нужно ставить скобки при перечислении исключений. Иногда это бесило, когда пишешь код, обрабатываешь сразу много ошибок в исключении и забываешь поставить скобки. Прям рррр…
Зачем это: так просто удобнее. Как говорится, мелочь, а приятно.
try:
open_file("data.txt")
except FileNotFoundError, PermissionError: # Раньше требовалось (FileNotFoundError, ...)
print("Файл не найден или нет прав!")
Отладка без остановки
Что случилось: можно подключиться к работающему скрипту через отладчик pdb, даже если он уже запущен.
Зачем это: допустим, у вас работает телеграм-бот, и вдруг он глючит. Раньше пришлось бы его останавливать и перезапускать. Теперь — просто подключаетесь и чините на ходу. Но чинить придётся в любом случае :)
# В консоли:
python -m pdb -p 12345 # Где 12345 — ID процесса
Ошибки в finally запретили
Что случилось: теперь нельзя писать return
, break
или continue
внутри блока finally
, если они прерывают его выполнение.
Зачем вам это: это как выйти выкидывать мусор, захлопнуть дверь, а ключи остались внутри. И как теперь возвращаться домой — непонятно. Так и здесь: finally
должен гарантированно выполниться, а return
может это сломать. Проще говоря, не получится пойти выкидывать мусор без ключей.
try:
risky_code()
finally:
return 42 # Теперь так делать нельзя! Будет ошибка.
Многопоточность стала быстрее
Что случилось: экспериментальный режим без GIL (это такая штука, которая мешает Питону работать в нескольких потоках сразу) стал стабильнее.
Зачем это: если вы пишете код для многоядерных процессоров, теперь можно выжать из них больше скорости. Пока режим бета, но будущее уже близко. Ждём и верим.
Цветные тесты и календари
Что случилось: встроенные модули unittest
, calendar
и другие научились выводить цветной текст.
Зачем вам это: теперь проваленные тесты светятся красным, а успешные — зелёным. Календари красиво раскрашены. В целом, работать в консоли стало приятнее, конечно.
Что в итоге
В сухом остатке — Python 3.14 стал быстрее и безопаснее. Чтобы воспользоваться новыми возможностями, обновите версию и проверьте, как изменения влияют на ваш код (особенно в многопоточных приложениях и при работе с аннотациями). Ну и на цветную красоту в консоли тоже нужно посмотреть.
Вам слово
Приходите к нам в соцсети поделиться своим мнением о релизе и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!