Релиз Python 3.6

Релиз Python 3.6


Прошло 15 месяцев, и наконец-то мир увидел релиз языка программирования 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.

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

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


В модуль hashlib разработчики добавили поддержку алгоритмов хэширования 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 (списковых включений) путем работы с выражением «async for» для таких элементов, как списки, множества и словари. Есть и возможность использования выражений await для практических всех видов списковых включений: 

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

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

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


Найдена новая уязвимость в Ubuntu, позволяющая выполнить произвольный код на машине жертвы Найдена новая уязвимость в Ubuntu, позволяющая выполнить произвольный код на машине жертвы

23-летний исследователь и разработчик ПО Donncha O’Cearbhaill обнаружил уязвимость в Ubuntu Desktop, позволяющую выполнить любой код на удалённой машине, если пользователь

Подробнее
Snapchat приобрёл разработчика технологии дополненной реальности Cimagine Snapchat приобрёл разработчика технологии дополненной реальности Cimagine

Сервис по обмену мгновенными сообщениями Snapchat приобрёл израильский стартап Cimagine Media, специализирующийся на разработке технологий дополненной реальности.

Подробнее
mode_edit
  • Аноним

    питон еще живой ?
    лучше бы сделали питон 4 на основе второго с совместимым апи.

    02 Января 2017, 16:36

Случайная цитата

Вовсе не обязательно соглашаться с собеседником, чтобы найти с ним общий язык.