Что нового в Python 3.14

Разбираем главные изменения

Что нового в Python 3.14

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 стал быстрее и безопаснее. Чтобы воспользоваться новыми возможностями, обновите версию и проверьте, как изменения влияют на ваш код (особенно в многопоточных приложениях и при работе с аннотациями). Ну и на цветную красоту в консоли тоже нужно посмотреть.

Вам слово

Приходите к нам в соцсети поделиться своим мнением о релизе и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Обложка:

Алексей Сухов

Корректор:

Елена Грицун

Вёрстка:

Кирилл Климентьева

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
А вы читали это?
easy
[anycomment]
Exit mobile version