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

Топ 6 самых полезных функций Python 3.9

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

Автор оригинала: Pankaj Kumar.

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

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

Сводка функций Python 3.9

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

  1. PEP 584, операторы словаря.
  2. PEP 585, тип намекающихся в стандартных коллекциях
  3. PEP 615, база данных часового пояса IANA включена в стандартную библиотеку в модуле ZoneInfo
  4. PEP 616, струнные методы для удаления префиксов и суффиксов
  5. Pep 617, новый Python Parser
  6. Лучшие модули для наибольшего общего делителя (GCD) и наименее распространенные несколько (LCM)

Проще пропустить и обновлять словари (PEP 584)

У Питона уже было несколько способов объединить два или более Словари Отказ Но были несколько вопросов с теми.

  • Метод Dict1.update (Dict2) – Вы можете объединить только два словаря одновременно, и этот метод требует временной переменной для хранения объединенного словаря.
  • Диктовый метод распаковки (** Dict1, ** Dict2) – Этот метод игнорирует типы отображений. Не удается для диктовых подклассов, таких как defaultdict которые имеют несовместимые __init__ метод
  • Метод ChainMap (DICT1, DICT2) – Переменные Chaimap – это обертки оригинальных словарей. Таким образом, любые изменения в Chainmap изменит исходные словари.

Оператор Союза словаря Python

Не было единого метода для объединения двух словарей в Python. Но теперь функции Python 3.9 введите оператор Univace Union (|) Отказ

Рассмотрим этот пример ниже:

>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}
>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> d | e
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> e | d
{'cheese': 3, 'aardvark': 'Ethel', 'spam': 1, 'eggs': 2}

# Augmented assignment operator
>>> d |= e
>>> d
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}

Первые два примера Покажите, как оператор Союза словаря подчиняется порядку предметов в словаре.

Таким образом, в зависимости от того, что словарь сначала выделяется, словарные элементы из него выталкиваются, а вторые элементы словаря добавляются к первому.

Третий пример Это оператор дополненного назначения, похожий на – =.

Он назначает объединенный словарь переменной без необходимости третьей переменной.

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

Ранее статическая набрав была построена на вершине существующего просмотра Python Runtime.

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

Это создало немного путаницы, так как у нас были два системы параллельного типа, не очень конкурирующие, но мы всегда должны были следить за этим параллелизмом. Были даже обманщики.

Ну, теперь это закончено.

Перемещая универсальные универсальные коллекции, это облегчает аннотацию программ, так как больше нет необходимости для иерархии параллельного типа в модуле печати.

Это позволяет использовать один и тот же тип синтаксиса во всех контекстах.

Пример типов, которые вам раньше приходилось импортировать из набора текста для использования в использовании списка, Dict, Set, Custle, необязательно, а также в качестве примера. Прямо сейчас вы можете просто импортировать их как общий Список или Dict, Set, Tupple, опционально и т. Д. Отказ

Итак, вы прекращаете использовать:

typing.List
typing.Dict

И вместо этого используйте намного проще:

list
dict 

Внимание, это не будет генерировать амортизационные войти, так как можно ожидать в этом контексте.

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

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

Поддержка во время встроенного времени в модуле ZoneInfo (PEP 615)

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

Он имеет базу данных часовых поясов, которые синхронизируются, более конкретно, база данных часовой зоны IANA. Это теперь добавлено в стандартную библиотеку, что облегчает доступ.

Это общий способ, которым он работает: модуль ZoneInfo будет использовать часовой пояс системы по умолчанию. Если нет системных часовых поясов, то он будет использовать TzData в качестве часового пояса.

Вот пример:

import zoneinfo
import datetime
myzone = zoneinfo.ZoneInfo("America/Los_Angeles")
print(datetime.datetime.now(tz=myzone))

Вышеуказанный код создает объект с информацией ZoneInfo на основе часовой зоны NY. Затем он печатает объект DateTime на основе этой зоны.

Возможно, вам понадобится PIP Установить tzdata Во-первых, перед получением доступных серверов часовых поясов.

Строковые методы для удаления префиксов и суффиксов (PEP 616)

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

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

Это общие манипуляции, либо для небольших локальных веб-сайтов, либо в больших системах хранения данных. И струны могут быть отмечены остатком их происхождения или лишней информации, нам может потребоваться избавиться от некоторой точки.

Что бы ни было, у нас есть два новых метода, которые позволяют для определенной элегантности при этом, например, для удаления префиксов и удаления суффиксов.

Вот пример для удаления префикса:

golden = ["golden-ring", "golden-earring", "golden-necklace"]
for gold in golden:
   not_golden = gold.removeprefix("golden-")
   print(not_golden)

Результатом является:

ring
earring
necklace

Вот еще один пример для удаления суффиксов. Вы увидите, что работа, как правило, одинаковы:

jams = ["strawberry-jam", "raspberry-jam", "orange-jam"]
for jam in jams:
   fruit = jam.removesuffix("-jam")
   print(fruit)

Результатом является:

strawberry
raspberry
orange

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

Новый парсер (PEP 617)

Одна из самых фундаментальных частей любого языка программирования – это анализатор.

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

Была возникновение анализатора и довольно глубоко один.

Python использовал анализатор LL (1) (это означает «слева направо, крайне вывод, сверху вниз»). Долгое время сейчас это использовалось для анализа кода в деревьях разбора.

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

Использование простого парсера имеет свои преимущества.

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

Исследованы шарверы PEG (грамматики для анализа экспрессии), чтобы увидеть, могут ли они принести конкретное преимущество для Python, пытаясь достичь хорошего баланса между властью и сложностью.

Фаршры PEG действительно более мощные, но они вводят еще один уровень сложности, с которыми можно трудно иметь дело.

Последняя версия поставляется с двумя парсерами: предыдущий и новый.

Основная идея предназначена как для анализатора PEG, так и PEG, так и для PEG-парсера для создания того же AST, которое является абстрактным синтаксическим деревом.

PEG-парсер теперь по умолчанию. Однако, если вы все еще хотите бегать со старым парсером, вы можете сделать это, на данный момент. Просто используйте -X OldParser Как вариант времени выполнения, как это:

python -X oldparser program.py

Если вы находитесь в ситуации, когда вы будете использовать это многое, и, возможно, не захотите указывать флаг в каждом вызове, вы можете установить переменную среду PythonoldParser, которая существует для этой цели, как это:

export PYTHONOLDPARSER="true"

или, на самом деле, к любому непустому строковому значению.

На данный момент новый парсер по умолчанию, а старый может доступен и использовать и использовать.

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

Если это так, у вас есть инструменты и возможность устранять их, так как старый парсер обязан удалить на Python 3.10.

Это сосуществование парсеров – это просто чтобы нас разогреты.

Когда анализатор LL (1) больше не рядом, новые функции могут быть реализованы в анализатор, который требует сложности, которую анализатор PEG может обрабатывать, такие как сопоставление структурных рисунков.

С точки зрения скорости нет большого разницы между ними, PEG может работать немного быстрее, но не должно быть ничего заметного.

Величайший общий делитель (GCD) и наименее распространенные несколько (LCM)

Существует модификация существующих функций Math Python Math, которые рассчитывают наибольший общий делитель (GCD) и наименее распространенные многочисленные (LCM), чтобы сделать функции более мощными.

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

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

Вот пример:

>>> import math
>>> math.gcd(24, 12)
6

GCD 24 и 12 – 6, потому что 6 является самым большим числом, которое разделяет как 24, так и 12.

Наименее распространенные несколько (LCM) связаны с GCD. LCM двух чисел является наименьшим числом, которое можно разделить на обоих. В новых функциях Python 3.9 вам больше не нужно определять свою собственную функцию LCM:

>>> import math
>>> math.lcm(49, 14)
98

Наименьшее распространенное множество 49 и 14 составляет 98, потому что 98 является наименьшим числом, которое можно разделить как 49 и 14.

В более ранних версиях Python функции существовали, чтобы рассчитать GCD и LCM, но принимая только два числа. Запуск этой версии вы можете иметь какое-либо произвольное количество аргументов.

Так что у вас будет этот код:

>>> import math
>>> math.gcd(math.gcd(273, 1729), 6048)
7

Но теперь вы можете иметь этот код:

>>> import functools
>>> functools.reduce(math.gcd, [273, 1729, 6048])
7

Заключение

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

Вы можете узнать намного больше о Python на MoonningDev.