Что за программа python 3 8

6 Июль 2019 , Python, 22973 просмотров, What is new in Python 3.8

Релиз Python 3.8 намечен на октябрь 2019 года, но уже сейчас у каждого есть возможность пощупать набор новых фишек языка. Пока пишу этот пост, на официальном сайте доступна версия python 3.8b2.

Итак, что же нам готовит релиз грядущий?

f-string =

Теперь выводить debug информацию стало ещё проще и красивее. Достаточно в f-string передать знак =:

>> a = 123 >> b = 456 >> print(f’ and ‘) a=123 and b=456

Assignment Expressions или :=, он же walrus operator

Легендарный PEP572 из-за которого Гвидо сложил полномочия диктатора Python. Оператор выполняет присваивание значения переменной в выражении. Например, вам хочется проверить есть ли ключ в словаре, а также присвоить значение этого ключа переменной. В версиях Python до 3.8 необходимо сделать:

params = x = params.get(‘foo’) if x: print(x)

В версии 3.8 код выглядит чуть компактнее:

Учим Python за 1 час! #От Профессионала


params = if x := params.get(‘foo’): print(x)

Positional-only arguments

В python 3 в далёком 2006 году появились keyword-only arguments (PEP3102). Их задача заключается в навязывании передачи аргументов функции или методу по ключу после символа *

def test(a, b, *, key1, key2): pass test(1,2,3,4) Traceback (most recent call last): File «», line 1, in test(1,2,3,4) TypeError: test() takes 2 positional arguments but 4 were given

Интерпретатор сообщает нам, что функция принимает только 2 позиционных аргумента, но передано было 4. Чтобы он не ругался, функцию необходимо вызывать так:

Читайте также:
Driver export что это за программа

test(1, 2, key1=3, key2=4)

В python 3.8 появилась возможность задавать передачу аргументов исключительно согласно их позиции. В отличие от keyword-only arguments, все аргументы обязаны быть переданы согласно позиции:

def position_only(a, b, c, d=0, /): pass position_only(1, 2, 3) # OK position_only(1, 2, c=3) # вызов такой функции провоцирует исключение Traceback (most recent call last): File «», line 1, in position_only(1,2,c=3) TypeError: position_only() got some positional-only arguments passed as keyword arguments: ‘c’

Общая память для IPC

Для межпроцессорного взаимодействия в python 3.8 появилась общая память.

Раньше, чтобы передавать данные между процессами внутренний механизм подразумевал сериализацию и десериализацию объекта и отправку данных в сокет. С использованием механизма ОС по выделению общей памяти, отпадает необходимость взаимодействия через диск или сокет, а это даёт значительный рост к производительности. В пакете multiprocessing появился модуль shared_memory. Пример использования общей памяти между двумя разными процессами:

from multiprocessing import shared_memory a = shared_memory.ShareableList(range(5)) print(a.shm.name) >>> ‘wnsm_bd6b5302’

Открываем другой shell и считываем данные из общей памяти:

from multiprocessing import shared_memory b = shared_memory.ShareableList(name=’wnsm_bd6b5302′) print(b) >>> ShareableList([0, 1, 2, 3, 4], name=’wnsm_bd6b5302′)

TypedDict

Появилась возможность указывать тип значений у словарей с фиксированным количеством строковых ключей. Например:

Python на практике / Пишем 3 программы на Питон за 5 минут


from typing import TypedDict class Movie(TypedDict): title: str year: int movie: Movie =

Класс Movie можно использовать в аннотациях:

from typing import List def my_function(films: List[Movie]): pass

final

Те, кто знаком с Java сразу понимают что такое final. То, что помечено final не должно изменяться во время жизненного цикла скрипта.

from typing import Final, final birth_year: Final = 1989 birth_year = 1901 # вот тут IDE или type checker вроде mypy должен ругаться

Читайте также:
Speccy installer что это за программа

Классы, помеченные декоратором final, не должны быть унаследованы:

Также можно формально запретить переопределение метода в дочернем классе:

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

Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Интересные записи:

  • FastAPI, asyncio и multiprocessing
  • Django Channels: работа с WebSocket и не только
  • Обзор Python 3.9
  • Почему Python?
  • Pyenv: удобный менеджер версий python
  • Руководство по работе с HTTP в Python. Библиотека requests
  • Работа с MySQL в Python
  • Что нового появилось в Django Channels?
  • Celery: начинаем правильно
  • Введение в logging на Python
  • Работа с PostgreSQL в Python
  • Введение в pandas: анализ данных на Python
  • Авторизация через Telegram в Django и Python
  • Разворачиваем Django приложение в production на примере Telegram бота
  • Python-RQ: очередь задач на базе Redis
  • Как написать Telegram бота: практическое руководство
  • Участие в подкасте TalkPython
  • Итоги первой встречи Python программистов в Алматы
  • Строим Data Pipeline на Python и Luigi
  • Видео презентации ETL на Python

Источник: khashtamov.com

Python 3.8: Что нового и как этим пользоваться?

Следующий перевод подготовлен специально для «питонистов», которым интересно наверняка интересно почитать о новых функциях Python 3.8. В преддверии запуска нового потока по курсу «Разработчик Python» мы не смогли пройти мимо этой темы.

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

Моржовый оператор (Оператор присваивания)

Python 3.8 — Новые возможности языка программирования

Бета-цикл Python 3.8 уже запущен в лице Python 3.8.0b1, который был выпущен 4 июня, за которой вышла следующая бета 4 июля. Это значит, что Python 3.8 уже можно назвать завершенным делом, мы можем с уверенностью начать изучать особенности последнего реализа. Выпуск анонсирован на октябрь, так что пользователям не нужно долго ждать.

Читайте также:
Для чего нужна программа испытаний

Оператор морж (walrus) в Python 3.8

Заглавная особенность Python 3.8, и в то же время — самая спорная. Путь принятия решения о PEP 572 («Assignment Expressions») был довольно ухабистым, что привело к новой модели управления языком.

Представим, что новое правительство готовится заменить давнего доброжелательного диктатора, которого мы с вами знаем всю жизнь, Гвидо ван Россума, после того как он уйдет в отставку из-за беспорядков, связанных с PEP 572 (конфликт между сообществом разработчиков из за добавления нового синтаксиса).

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат https://python-scripts.com/python-3-8-version» target=»_blank»]python-scripts.com[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru