Это основные функции новейшей версии Python.

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

  1. Оператор Warlus

Это определенно одна из самых важных функций в Python 3.8. В Python оператор Walrus выглядит так (:=). Название происходит от двоеточия, похожего на глаза, и знаков равенства, похожих на бивень, по сути, моржа, спящего на боку.

Вся идея Walrus Operator состоит в том, чтобы сохранить строку, сделать ее более лаконичной. В предыдущем вам нужно было объявить n = len(a) перед циклом. После Python 3.8 мы можем объявить n := len(a) внутри цикла, что сделает его более кратким. Другим примером является изображение ниже:

В этом примере у нас есть 6 строк кода до обновления и только три строки после обновления. Это из-за Walrus Operator. В приведенном ниже коде я объявил ввод в цикле while, что позволяет мне сказать, что он не должен равняться «quit». Это позволило мне избавиться от оператора if, что сделало мой код намного короче.

2. Более простой отладчик с F-строками

Это дополнение к F-строкам, впервые представленным в Python 3.6. Это в основном упрощает код, позволяя использовать цветочные скобки ( {} ) вместо использования %s или %i. Для простого напоминания о том, что это такое, вот пример до и после F-строк:

Это может показаться не таким уж большим, но это так. Если есть много %s, например 5, это будет раздражающе загромождено. С другой стороны, F-строки значительно упростили бы фактическое использование значений в строках. В Python 3.8 они еще больше упрощают использование. Посмотрите на пример ниже:

Это обновление упростило использование F-строк и в целом, опять же, сделало наш код более лаконичным. До Python 3.8 вам приходилось объявлять версию строки в нижнем регистре в отдельной переменной, а затем использовать F-строку для ее вывода. После обновления мы теперь можем просто вызвать функцию .lowercase() вперед. Точно так же теперь мы можем выполнять арифметические операторы в F-String, а также использовать в них классы.

3. Еще более точные типы

Еще одна вещь, которая была добавлена ​​в это обновление, — это больше типов. До этого в Python уже было встроено много разных типизаций, но чем больше, тем веселее! Это точные типы:

  • Буквенные типы
  • Типизированные словари
  • Протоколы

В Python в коде поддерживаются необязательные «подсказки», используемые в качестве аннотаций, например ( -›). Используйте приведенный ниже код в качестве примера:

Пример говорит нам, что есть новая функция, названная quadruple, которая принимает int (называемое число) и дает нам в 4 раза больше сумма числа. С другой стороны, стрелка указывает, что функция quadruple() также должна возвращать тип int. Аннотации являются «подсказками» и не будут применяться во время выполнения. Функция даже возьмет строку, скажет «Привет» и напечатает ее 4 раза. Но это было до появления типов, где можно было только проверить, относится ли число к типу int, string, float. Теперь все по-другому.

PEP 586 представил литеральные типы, которые выглядят следующим образом: Literal[]. Внутри кавычек передается число или строка. Это первый из четырех типов средств проверки типов, представленных в Python 3.8. Литерал может представлять одно или несколько определенных значений. Посмотрите на следующий пример, взятый с realpython.com:

Программа перед литеральными типами пропускала строку "up" через функцию, даже если строка недействительна, как "Vertical"и"Horizontal" — единственные правильные строки. Мы хотим убедиться, что программа может работать только в том случае, если переданная строка является "Вертикальной"или"Горизонтальной". Это делается с помощью нового типа, представленного в Python 3.8, который называется Literal Types. Как видно из примера, в коде после Python 3.8 есть функция Literal Types (помните: Literal[]). Эта функция достигает цели запуска программы только в том случае, если строка, переданная в функцию draw_line(), допустима. Итак, мы можем добавить два элемента, чтобы код выглядел так:

направление: буквальное["вертикальное", "горизонтальное"]

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

В PEP 589 был введен TypedDict. В отличие от обычного словаря, в TypeDict вы уже можете указать ключ в классе и указать тип значения, например, string, int или плавать. Вот пример ниже:

Итак, сначала я создаю класс с именем schoolAndgrade(), который принимает TypedDict. Предварительно написанные элементы находятся в строке ниже. school должен иметь тип string, а grade_level должен иметь тип int. Затем создается фактический словарь, которому присваивается имя пользователя, в данном случае gauk. Затем следует класс schoolAndgrade(), в котором в скобках указана школа (строка) и уровень обучения (int). Итак, TypedDict — это, по сути, предварительно типизированный словарь, в котором предварительно типизированы только ключи. Значения могут меняться в зависимости от человека. Это очень полезно, если у вас есть база, такая как имя, фамилия, возраст и т. д. Это потому, что вы не хотите вводить одно и то же снова и снова.

Третий и последний элемент называется Протокол. Несмотря на то, что это используется уже давно, официальное признание этого произошло только в мае 2019 года. Протокол в основном представляет собой утиную печать в Python. Вот пример с realpython.com:

В этом примере я определил протокол с именем Named. Это дает нам возможность идентифицировать все объекты с атрибутом .name. Затем greet() берет объект, если у него есть имя, а затем печатает "Привет", за которым следует obj.name.

4. Новая и улучшенная математика и статистика

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

  • math.prod()делает то же самое, что и sum(), но для умножения

  • math.isqurt(), который находит все число округленным в меньшую сторону.

  • math.dist() дает нам расстояние между двумя точками на координатной плоскости, а math.hypot() дает нам длину вектора

В этой библиотеке также есть новые функции статистики, вот некоторые из них:

  • statistics.fmean() дает нам версию с плавающей запятой среднего значения набора целых чисел

  • Statistics.geometric_mean() вычисляет среднее геометрическое для набора чисел с плавающей запятой

  • Statistics.multimode() находит наиболее часто встречающиеся числа в списке

  • statistics.quantiles() вычисляет точки отсечения для разделения данных на n непрерывных интервалов с равной вероятностью

Это лишь несколько примеров всего, что есть в обновлении Python 3.8. Чтобы увидеть больше, перейдите по ссылке https://docs.python.org/3/whatsnew/3.8.html. Это все для этой статьи, спасибо, что потратили свое время на чтение этого

Источники: