- PVSM.RU - https://www.pvsm.ru -

Релиз Python 3.6 — да, теперь он с нами

Релиз Python 3.6 — да, теперь он с нами - 1

Прошло 15 месяцев, и наконец-то мир увидел релиз [1] языка программирования Python 3.6. Нового довольно много, ведь не зря разработчики ждали целых 15 месяцев. В релизе добавлены новые модули, обновлены стандартные библиотеки, улучшены наборы различных настроек. В целом, Python 3.6 получил много улучшений, что можно считать отличным подарком к Новому Году. Давайте посмотрим подробнее, что принес нам Дед Мороз новый релиз.

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

>>> name = «Fred»
>>> f«He said his name is {name}.»
'He said his name is Fred.'
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal(«12.34567»)
>>> f«result: {value:{width}.{precision}}» # nested fields
'result: 12.35'

Читаемость чисел можно улучшать при помощи символов подчеркивания, например, таким образом — 1_000_000 или 0x_FF_FF_FF;

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

В модули hashlib и ssl добавили поддержку OpenSSL 1.1.0 [2].

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

primes: List[int] = []
captain: str # Note: no initial value!
class Starship:
stats: Dict[str, int] = {}

В модуль hashlib [3] разработчики добавили поддержку алгоритмов хэширования BLAKE2, SHA-3 и SHAKE, также реализована функция формирования ключа scrypt();

Добавлена возможность определения асинхронных генераторов. Так, в Python 3.5 было нельзя использовать await и yield одновременно в теле одной функции. Здесь же, в новом релизе этого ограничения уже нет. Таким образом, открывается возможность определения генераторов, которые работают в асинхронном режиме:

async def ticker(delay, to):
""«Yield numbers from 0 to *to* every *delay* seconds.»""
for i in range(to):
yield i
await asyncio.sleep(delay)

Добавлено довольно много улучшений, которые связаны с работой на ОС Windows;

Также добавлена возможность асинхронной обработки так называемых comprehensions (списковых включений [4]) путем работы с выражением «async for» для таких элементов, как списки, множества и словари. Есть и возможность использования выражений await для практических всех видов списковых включений:

result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]

Модуль typing [5] теперь попал в разряд стабильных;

Модуль tracemalloc [6] подвергся переработке, средства диагностики ошибок при распределении памяти значительно расширены;

Конечно, обновлений гораздо больше, информацию обо всех новых и обновленных моментах можно получить вот здесь [7].


Коллеги, мы, компания Kingservers, сейчас ищем ИТ-авторов для технических сайтов (не Хабрахабр и не Geektimes, сторонние русскоязычные и англоязычные ресурсы). Условие — человек, который пишет статью (она должна быть грамотной и технической), должен еще иметь и возможность опубликовать ее на таком ресурсе. Если вы — такой автор, пишите в личку.

Автор: King Servers

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/224738

Ссылки в тексте:

[1] увидел релиз: http://blog.python.org/2016/12/python-360-is-now-available.html

[2] OpenSSL 1.1.0: https://www.opennet.ru/opennews/art.shtml?num=45027

[3] hashlib: https://docs.python.org/3.6/library/hashlib-blake2.html#module-hashlib

[4] списковых включений: https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%BE%D0%B5_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5

[5] typing: https://docs.python.org/3.6/library/typing.html#module-typing

[6] tracemalloc: https://docs.python.org/3.6/library/tracemalloc.html#module-tracemalloc

[7] вот здесь: https://docs.python.org/3.6/whatsnew/3.6.html

[8] Источник: https://habrahabr.ru/post/318354/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best