Новые интересные функции в Python 3.9

22 июня, 2020

Подписывайся на наш канал в Telegram, чтобы ежедневно совершенствоваться в Python - перейти

В новой версии 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 в свой код, если хотите выполнить топологическую сортировку графиков.


Совершенствуй знания каждый день у нас в Телеграм-каналах

Вопросы, реклама — VK | Telegram