В новой версии Python представлены некоторые интересные функции и новые модули. Будет интересно сделать практическое упражнение с ними. А пока давайте узнаем о функциональности этих функций и модулей.
Новые функции
Словарь слияния и обновления операторов
Python 3.9 вводит операторы слияния (|) и обновления (| =) в классе dict
. Если у вас есть два словаря x и y, теперь вы можете использовать эти операторы для объединения и обновления.
x = {1: "one", 2: "two"}
y = {3: "three"}
Вы можете использовать | объединить эти оба словаря.
z=x|y
print(z)
[Output]: {1: "one", 2: "two", 3: "three"}
Если оба словаря имеют общий ключ, то на выходе будет отображаться вторая пара ключ-значение.
x = {1: "one", 2: "two",3: "3"}
y = {3: "three"}
z=x|y
print(z)
[Output]: {1: "one", 2: "two", 3: "three"}
Для обновления словаря вы можете использовать следующий оператор.
x = {1: "one", 2: "three"}
y = {2: "two"}
x|=y
print(x)
[Output]: {1: "one", 2: "two"}
Строковые методы removeprefix() и removesuffix()
В классе str в новом обновлении появятся новые методы removeprefix()
и removesuffix()
.
Вы можете удалить префикс из любой строки, используя метод removeprefix()
.
'TestHook'.removeprefix('Test')
'Hook'
Если строка не начинается с префикса ввода, будет возвращена копия исходной строки.
'BaseTestCase'.removeprefix('Test')
'BaseTestCase'
Если строка заканчивается суффиксом ввода, вывод будет выглядеть следующим образом string[:-len(suffix)]
.
'MiscTests'.removesuffix('Tests')
'Misc'
Если входной суффикс пуст или строка на этом не заканчивается, выводом будет копия исходной строки.
'TmpDirMixin'.removesuffix('Tests')
'TmpDirMixin'
Новый синтаксический анализатор
В Python 3.9 используется новый синтаксический анализатор, основанный на PEG. Ранее Python использовал LL (1). PEG более гибок, чем LL (1), когда речь идет о создании новых функций в языке. Официальная документация говорит, что эта гибкость будет видна в Python 3.10 и позже.
Подсказки типа
Python динамически определяет типы данных для переменной. Для статического размещения типов данных используется подсказка типа. Это было введено в Python 3.5.
Теперь вы можете использовать встроенные типы коллекций (list
и dict
) в качестве универсальных типов. Ранее вам приходилось импортировать основные типы (List
или Dict
) из typing
.
def greet_all(names: list[str]) -> None:
for name in names:
print("Hello", name)
Теперь нет необходимости вызывать List
из typing.List
.
Новые библиотеки
ZoneInfo
Новое обновление Python представляет новый модуль zoneinfo
. Это обеспечит поддержку базы данных часовых поясов IANA в стандартной библиотеке.
>>> from zoneinfo import ZoneInfo
>>> from datetime import datetime
>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
>>> print(dt)
2020-10-31 12:00:00-07:00
>>> dt.tzname()
'PDT'
Мы создали datetime
объект и дали параметр часового пояса в объекте. Если вы теперь посмотрите на использование часового пояса dt.tzname()
, вывод будет .PDT
graphlib
Вы можете добавить модуль graphlib
в свой код, если хотите выполнить топологическую сортировку графиков.