Python 3.9 уже здесь. Краткий обзор
Итак. Оно вышло, что нас ждет на ближайший примерно год?
Не будем заостряться на битность по умолчанию и прочую фигню, а взглянем на суть
PEP 584
В этом PEP'е нам услужливо добавили операторы слияния ( | ) и обновления словарей ( | = ) в стандартный класс dict. Взглянем на примеры из стандарта.
Слияние
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
Обновление
>>> x |= y
>>> x
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
Заделали такую фичу просто для того, чтобы избавится от страшных конструкций вида {**d1, **d2}, которые не видны в коде.
PEP 585
Добавили подсказки обобщенных типов внутрь стандартной библиотеки. Не нужно теперь импортировать для этого модуль. За подробностями можно взглянуть модуль typing. Он весь теперь в стандартной библиотеке.
a: list[str] = list()
def print_items(array: list[str]) -> None:
pass
PEP 614
В настоящее время Python требует, чтобы все декораторы состояли из имени, разделенного точками, за которым, возможно, следует один вызов. Этот PEP предлагает снять эти ограничения и разрешить декораторам быть любым допустимым выражением.
Тут проще показать, чем пересказывать этот PEP. Кому надо, тот сходит посмотрит сам.
Было
buttons = [QPushButton(f'Button {i}') for i in range(10)]
@buttons[0].clicked.connect
def spam():
pass
Стало
button_0 = buttons[0]
@button_0.clicked.connect
def spam():
pass
PEP 616
Добавили пару новых методов для класса строк
str.removeprefix(prefix)
str.removesuffix(suffix)
Как не трудно угадать, одна удаляет подстроку из начала строки, вторая – из конца.
>>> 'hello_world'.removeprefix ('hello_')
world
>>> 'hello_world'.removesuffix ('_world')
hello
PEP 593
Тут нам выдают гибкие аннотации функций и переменных с помощью произвольных метаданных. Подробности тут. С этим стандартом python все более начинает напоминать компилируемые языки.
Кроме указанного нам нагрузили:
- Усовершенствование интерпретатора,
- новый модуль для поддержки базы данных часовых поясов IANA в стандартной библиотеке,
- ускорение работы многих встроенных типов,
- усовершенствование сборщика мусора,
- кучу исправленных проблем и доработку отдельных библиотек. \