Рубрики
Без рубрики

Обновления Python 3.9, объясненные примерами рук на примерах

Автор оригинала: Harshit Tyagi.

Последний стабильный выпуск Python отсутствует!

Энтузиасты с открытым исходным кодом со всего мира работают над новыми, улучшенными и устаревшими функциями в Python в течение прошлого года.

Хотя бета-версии версились на некоторое время, официальный выпуск Python 3.9.0 произошел на 5 октября 2020 года.

#Python 3.9 теперь официально доступен! Получить это здесь: https://t.co/qvhxvbdhhhhh Выпущено вовремя, на бюджет, отличные функции и оптимизации, миллион домашних хозяйств использует! Легко наш лучший релиз когда-либо! Это до 3,10 в следующем году. Но вы идете на новый RM @pyblogsal для этого!

Официальная документация содержит все детали последних функций и изменяющих средств. На протяжении всего этого поста я проведем вас через несколько классных функций, которые могут пригодны в ваших повседневных задачах программирования.

Мы проверим следующее:

  • Тип подсказки и гибкие функции и вариабельные аннотации
  • Операторы Союза в словарях
  • ZoneInfo – Доступ к вычислению и расчете часовых поясов
  • Строковые методы для удаления префиксов и суффиксов
  • Другие выпуски выпуска

Чтобы следовать со мной или попробовать новые функции, у вас должен быть установлен Python 3.9.

Я использовал менеджер окружающей среды под названием PENV (В качестве альтернативы вы можете использовать CONDA), чтобы получить последнюю версию, установленную рядом с моей текущей версией. Вы также можете запустить его, используя Официальный документ докера Отказ

Функциональные аннотации были рядом с момента Python 3.0, и они позволяют добавлять метаданные в функции Python. Итак, что нового в Python 3.9?

Python 3.9 Добавлено PEP 593 Отказ Он представил механизм для расширения аннотаций типа из PEP 484 который предоставляет стандартную семантию для аннотаций и предложил использовать аннотации для подсказки к типу.

Теперь может быть много других случаев использования для аннотаций, помимо подсказки к типу. Поэтому Pep 593 ввел набрав .annoted Что позволяет вам добавить больше деталей в метаданные.

Попробуем понять это лучше по примеру как Python 3.8 и 3.9.

Python 3.8.

def currency_exchange(eur: "euros", rate: "exchange rate") -> "euro to USD":
    """Converting Euros to USD using the exchange rate"""
    return eur * rate

Это простая функция, которая преобразует евро до USD, используя обменный курс. Мы использовали аннотации, чтобы служить документацией для пользователя.

Python 3.9.

from typing import Annotated
def currency_exchange(eur: Annotated[float, "euros"], rate: Annotated[float, "exchange rate"]) -> Annotated[float, "euro to dollars"]:
    """Converting Euros to Dollars using the exchange rate"""
    return eur * rate

Здесь мы используем вновь представленные Аннотированный это занимает как минимум два аргумента. Первый аргумент ( Float в примере) устанавливает подсказку типа, а остальные аргументы являются произвольными метаданными функции.

Пользователь/разработчик также могут проверить эти аннотации, используя __annotations__ атрибут:

Мы также можем проверить тип, используя get_type_hint () Функция:

Тип намекающихся в стандартных коллекциях

Основные типы данных, такие как int , утра или Bool просты в аннотировании.

Более раннее статическое набрав было построено постепенно поверх существующей среды выполнения Python и ограничено этим. Это привело к дублированной иерархии коллекции в модуле набора текста из-за генеральных средств – то есть у нас были оба Напечатайте. Лист и встроенный список.

С Regions у нас есть вопрос параметризации из-за их структуры хранения (что является контейнером). И по этим причинам мы не смогли использовать Список (поплавок) или Список [FLOAT] как тип подсказки напрямую. Вместо этого нам нужен модуль набора текста для достижения этого.

В Python 3.9 Эта дубликата иерархии больше не нужна. Мы можем аннотировать их напрямую:

scores: list(float)

Два из самых крутых и наиболее полезных функций Python 3.9 – это операторы (|) и обновления (| =), добавленные в встроенные Диктовать класс.

Существующие (3.8) способы объединения двух дикторов имеют много недостатков:

Python 3.8.

  • Диктовая распаковка выглядит уродливым и не легко обнаружена.
python = {2000: "2.0.1", 2008: "2.6.9", 2010: "2.7.18"}
python3 = {2008: "3.0.1", 2009: "3.1.5", 2016: "3.6.12", 2020: "3.9.0"}

##merging two dictionaries
{**python, **python3}
  • Другой метод Dict.Update, который изменяет оригинальный словарь на месте:

Python 3.9.

PEP 584 Ввел два новых оператора для словарей:

  • (|) Союз – объединить два словари. Он сохраняет оригинальные словари.
  • (| =) Обновление – Это для вместо места слияния словарей.
python = {2000: "2.0.1", 2008: "2.6.9", 2010: "2.7.18"}
python3 = {2008: "3.0.1", 2009: "3.1.5", 2016: "3.6.12", 2020: "3.9.0"}

##merging two dictionaries
python | python3

Сохраненные оригинальные диктовы:

python |= python3
python

Оператор обновления объединяет словари и обновляет словарь слева от оператора во время Сохранение последних ценностей Для перекрывающихся клавиш в двух дикторах.

Даты и время играют центральную роль во многих приложениях. Python предлагает всеобъемлющую поддержку через datetime Модуль в стандартной библиотеке. Но всегда было пробел в отношении интеграции часовых поясов к этим временным меткам.

До сих пор у нас были сторонние библиотеки, такие как Tateutil для реализации таких специфических правил часовой пояс.

Но теперь Python 3.9 добавил новый ZoneInfo Модуль, который позволяет вам получить доступ и использовать весь доступ к Интернету, назначенные номера базы данных номеров (IANA).

Python 3.8.

До сих пор мы получаем доступ к часовым поясам знакомых временных метров, используя Tzinfo Аргумент следующим образом:

from datetime import datetime, timezone

datetime.now(tz=timezone.utc)

Python 3.9.

Но с добавлением ZoneInfo у нас теперь есть доступ к База данных часового пояса IANA Отказ

from zoneinfo import ZoneInfo

ZoneInfo("Asia/Kolkata")

Мы можем сделать кучу операций со временными зонами, а InterConversion стал очень простым:

from datetime import datetime
from zoneinfo import ZoneInfo

post_date = datetime(2020, 10, 10, 18, 10, tzinfo=ZoneInfo("America/Vancouver"))

post_date.astimezone(ZoneInfo("Asia/Kolkata"))

PEP 616 Ввел новые методы для разделения префиксов и суффиксов из строк. Новые методы:

  • RemovePrefix ()
  • RemoSeuffix ()

На всех основных форумах сообщалось много повторяющихся проблем (например, Stackoverflow) вокруг lstrip () и RSTRIP () методы.

Python 3.8.

Мы снимаем символы с каждых концов строки с помощью метода полосы () следующим образом:

"Python 3.9 is out".strip(" Python")

Это удалило подстроку, присутствующее на концах строки. Если вы посмотрите внимательно, это удалило отдельных персонажей в «Python» I.E. ««, «P», «Y», «T», «H», «O» и «N».

Python 3.9.

Чтобы избавиться от префикса из строки, у нас сейчас есть RemovePrefix () :

"Python 3.9 is out".removeprefix("Python ")

Вы можете проверить это с помощью ряда других перестановок и комбинаций с RemoSuffix () метод также.

Кроме того, также было введено ряд других функций. Вот список вместе с IDS PEP:

  • PEP 617 , C Python теперь использует новый парсор на основе PEG – В настоящее время Python нового анализатора рядом с старым анализатором LL (1). Вы можете выбрать запустить свою программу, используя любую из анализаровщиков, использующих команду:
python -X oldparser script_name.py

Peg Parsers более надежны и мощными, как и для исследований Guido Van Rossum (он создатель Python). Цель PEG-парсера будет производить то же самое Абстрактное синтаксическое дерево (AST) Как старый LL (1) парсер.

Вот пример расчета GCD/LCM более чем двух номеров с использованием математической библиотеки:

  • PEP 602 Cpython теперь принимает новый годовой цикл выпуска – Они будут более последовательными с их релизами и получит новые версии каждый октябрь.
  • PEP 614 Расслабленные грамматические ограничения на декораторы – более гибкий синтаксис теперь доступен для людей, работающих на рамках GUI, таких как PYQT. Это отказывается от ограничения на декораторы, состоящие из пунктирного названия. Подробнее можно прочитать здесь Отказ

Чтобы узнать больше о деталях каждой из этих функций, отправляйтесь на Официальный Документация Отказ

3.9.0 отмечает большую веху в пути развития Python и для сообщества. Добавляются новые улучшения, как мы говорим, и 3.10 также будут иметь перспективные функции.

На данный момент вы должны попробовать их в ближайшее время, чтобы быть широко используемыми функциями, представленными в Python 3.9.

Попробуйте запускать свои существующие программы, используя Python 3.9 и посмотреть, если бы обновление стоило бы для вас.

Вы также должны попробовать новый парсер, который претендует на перспективность. Но мы только узнаем только после значительного тестирования в нескольких случаях использования.

Наука данных с Гершитом

С этим каналом я планирую развернуть пару Серия, покрывающая все данные науки о данных Отказ Вот почему вы должны быть подписаны на Канал :

Не стесняйтесь связываться со мной на Twitter или LinkedIn Отказ