Python — это язык программирования, который с каждым годом становится всё популярнее. Он удобен, мощен и при этом лёгок для изучения. Разработчики языка не стоят на месте и постоянно модернизируют его, добавляя новые возможности, улучшая производительность и делая код ещё более лаконичным и понятным. Если вы уже знакомы с Python, наверняка не раз задумывались, что нового появилось в свежих версиях. Сегодня мы подробно разберём, что интересного и полезного появилось в Python 3.9 — версии, выпущенной в октябре 2020 года, которая принесла несколько существенных улучшений и нововведений. Даже если вы ещё не обновили свою среду разработки, эта статья поможет понять, стоит ли это делать и какие возможности станут доступны.
Почему важно смотреть новости в Python
В программировании, и особенно в таких динамичных языках, как Python, изменения происходят довольно часто. Разработчики языка вносят улучшения не просто так — они прислушиваются к сообществу, исправляют ошибки, убирают устаревшее или неправильно реализованное, а также добавляют новые функции, делающие код чище и эффективнее.
Для программиста важно знать и применять новые инструменты, потому что это:
- Ускоряет разработку, позволяя писать меньше кода для тех же задач.
- Улучшает читаемость и поддержку проектов.
- Повышает производительность и безопасность программ.
Python 3.9 — отличный пример того, как даже небольшие, на первый взгляд, изменения могут оказать значительное влияние на повседневную работу.
Основные новшества в Python 3.9
В 3.9 версии разработчики сосредоточились как на новых возможностях, так и на улучшении производительности и удобства. Ниже подробно рассмотрим ключевые новинки.
1. Новый синтаксис для аннотаций типов с использованием встроенных generics
Если вы работаете с типами (особенно популярно в больших проектах и при использовании статической типизации с помощью mypy), то скорее всего знаете, как долго приходилось импортировать специальный модуль typing для таких вещей, как List, Dict и т.д.
В Python 3.9 появилась возможность писать аннотации типов с использованием «встроенных» generics, что упрощает код и делает его более естественным.
Рассмотрим пример:
from typing import List, Dict
# Старый способ:
def greet_all(names: List[str]) -> None:
for name in names:
print("Hello", name)
# Новый способ в Python 3.9:
def greet_all(names: list[str]) -> None:
for name in names:
print("Hello", name)
То есть вместо того, чтобы импортировать List и Dict из typing, теперь можно просто использовать привычные встроенные типы с квадратными скобками для указания параметров типа. Это упрощает и сокращает аннотации, делает код более «питоничным».
2. Операторы объединения и обновления для словарей
Работать со словарями (dict) — это основа Python. Раньше, чтобы объединить два словаря, приходилось писать что-то вроде dict.update() или использовать громоздкое выражение через **.
В 3.9 появились очень удобные операторы | и |= для объединения и обновления словарей соответственно.
| Операция | Описание | Пример | Результат |
|---|---|---|---|
| a | b | Объединение словарей в новый |
|
{‘x’: 1, ‘y’: 3, ‘z’: 4} |
| a |= b | Обновление словаря a элементами из b |
|
{‘x’: 1, ‘y’: 3, ‘z’: 4} |
Обратите внимание, что при конфликте ключей значения из второго словаря перезаписывают значения первого.
3. Улучшения в стандартной библиотеке
Python 3.9 обновил и улучшил множество встроенных модулей — от модулей для работы с путями и файлами, до утилитарных функций. Вот несколько наиболее значимых изменений:
- Модуль
zoneinfo— теперь стандартная библиотека имеет поддержку часовых поясов IANA, что облегчает работу с datetime и временем в разных регионах мира. - Модуль
functoolsполучил функциюcache, которая работает как декоратор для кэширования вызовов функций, что заметно упрощает мемоизацию. - Оптимизация в модуле
math: добавлены новые функции и улучшена производительность уже существующих.
Эти изменения дают разработчикам более современные инструменты, сокращая необходимость использовать сторонние библиотеки.
4. Новые возможности в работе со строками и путями
В Python 3.9 улучшилась обработка строк, в частности, появились новые методы и оптимизации для более эффективной и простой работы сразу «из коробки».
Кроме того, модуль os и связанные с файловой системой где-то получили маленькие, но полезные новшества, что особенно пригодится разработчикам, создающим кроссплатформенные приложения.
Другие полезные изменения
Кроме масштабных нововведений, в Python 3.9 появились дополнительные улучшения, которые, хотя и менее заметны с первого взгляда, значительно влияют на повседневную работу.
- Оптимизация и ускорение работы интерпретатора — в некоторых случаях приложения работают быстрее именно благодаря обновлённой внутренней реализации функций.
- Новые возможности для диагностики ошибок — обновлённые сообщения об ошибках стали более понятными и информативными, что облегчает отладку.
- Добавлен тип
str.removeprefix()иstr.removesuffix()— теперь удалять префиксы и суффиксы из строк стало проще и чище на синтаксисе, без дополнительных условий.
Пример использования removeprefix()
text = "Python3.9"
print(text.removeprefix("Python")) # Выведет "3.9"
Что стоит знать, прежде чем обновлять версию
Хотя Python 3.9 приносит много отличных возможностей, важно помнить, что обновление — всегда чуть-чуть рискованный процесс. Нужно проверить совместимость вашего кода и используемых библиотек, особенно если работаете в корпоративных или критических по надежности проектах.
Ниже несколько советов, как подготовиться к обновлению:
- Проведите тестирование вашего кода на версии 3.9 в отдельной среде.
- Обратите внимание на предупреждения об устаревших функциях или модулях.
- Обновите зависимости и библиотеки, если для них доступны версии, поддерживающие Python 3.9.
- Изучите официальные документы по измененным или удалённым функциям.
Краткий обзор ключевых нововведений — таблица
| Новшества | Описание | Пример |
|---|---|---|
| Генерики (Generics) с встроенными типами | Использование list[str], dict[str, int] вместо typing.List и typing.Dict | def f(items: list[str]) -> None: |
| Операторы | и |= для словарей | Простой способ объединять и обновлять словари | c = a | b |
| str.removeprefix() и str.removesuffix() | Удаление префиксов и суффиксов из строк | "prefix_string".removeprefix("prefix_") |
| Модуль zoneinfo | Поддержка часовых поясов IANA | from zoneinfo import ZoneInfo |
| functools.cache | Лёгкий кэш для функций | @cache |
Заключение
Python 3.9 — это важный шаг вперёд для языка, который делает его ещё более удобным и современным. Новые возможности, такие как использование встроенных generics, операторы объединения словарей и удобные методы строк, значительно упрощают жизнь разработчикам. Кроме этого, улучшения в стандартной библиотеке и оптимизации интерпретатора открывают дополнительные горизонты для создания эффективного и чистого кода.
Если вы ещё не пробовали Python 3.9, самое время обновиться и познакомиться с его новинками. Главное — подойти к этому аккуратно, проверить совместимость и насладиться написанием кода с новыми удобными инструментами. Ведь именно такие, казалось бы, мелкие шаги постепенно превращают разработчика в мастера своего дела.
Надеюсь, эта статья помогла вам лучше понять, что нового появилось в Python 3.9 и почему стоит обратить на это внимание. Пробуйте, экспериментируйте и пишите код с удовольствием!