The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Python 3.6"
Отправлено opennews, 24-Дек-16 00:39 
После 15 месяцев разработки представлен (http://blog.python.org/2016/12/python-360-is-now-available.h... значительный релиз языка программирования Python 3.6 (https://www.python.org/downloads/release/python-360/).

Среди добавленных новшеств (https://docs.python.org/3.6/whatsnew/3.6.html):

-  Добавлена поддержка форматируемых строковых литералов, позволяющих определить строку, содержащую подстановки. Заданные в фигурных скобках выражения вычисляются и подставляются в текст строки во время выполнения программы и форматируются с использованием протокола 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;


-  Определён синтаксис аннотаций  для переменных, позволяющий передать интерпретатору информацию о типах переменных. Аннотации сохраняются в атрибуте __annotations__ класса или модуля,  но в отличие от языков со статической типизацией не накладывают каких-либо ограничений, а  служат для структурирования метаданных, которые могут использоваться сторонними инструментами и библиотеками. Например:

   primes: List[int] = []

   captain: str  # Note: no initial value!

   class Starship:
      stats: Dict[str, int] = {}

-  Возможность определения асинхронных генераторов. В прошлой ветке Python 3.5 был реализован новый синтаксис async / awai для определения сопрограмм, но в теле одной функции невозможно было одновременно использовать await и yield. В Python 3.6 данное ограничение снято, что позволяет определять генераторы, работающие в асинхронном режиме:


   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)


-  Добавлена возможность асинхронной обработки списковых включений (https://ru.wikipedia.org/wiki/%D0%A1%D0%... (comprehensions) через использование выражения  "async for" для списков, множеств и словарей. Также допускается применение выражений await для всех видов списковых включений. Например:


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


-  Переработана реализация типа  dict, которая переведена на более компактное представление, похожее на реализацию от проекта PyPy. В итоге удалось сократить потребление словарями памяти на 20-25%;

-  Представлен новый метод "__init_subclass__", упрощающий настройку подкласса без использования метакласса;

-  Обеспечено сохранение порядка определения атрибутов класса (прядок можно отследить через новый атрибут  "__dict__");

-  Порядок определения аргументов ключевых слов, передаваемых в функцию, теперь соответствует порядку элементов в **kwargs;
-  Добавлена поддержка контрольных вызовов (probe) DTrace и SystemTap. При сборке с  опцией "--with-dtrace" Python может устанавливать маркеры для таких событий, как вызов и выход из функции, начало/завершение сборки мусора и выполнение строки кода;

-  Представлена новая переменная окружения  PYTHONMALLOC, через которую можно выбрать механизм распределения памяти для Python или включить отладочные хуки. Например, при указании "PYTHONMALLOC=debug" добавляются средства определения выхода за границы буфера, применяется специально заполнение новых и освобождённых блоков и т.п.

-  Стабилизирован API модуля asyncio (https://docs.python.org/3.6/library/asyncio.html#module-asyn... значительно увеличена производительность и расширена функциональность;
-  Добавлен протокол для определения путей в файловой системе в виде отдельных объектов pathlib. Например:


   >>> import pathlib
   >>> with open(pathlib.Path("README")) as f:
   ...     contents = f.read()


-  В функции datetime.datetime и datetime.time из модуля datetime (https://docs.python.org/3.6/library/datetime.html#module-dat... добавлен атрибут fold, информирующий о вхождении в неоднозначные промежутки времени, например в промежуток, возникающий при переводе часов на час назад;

-  В разряд стабильных переведён модуль typing (https://docs.python.org/3.6/library/typing.html#module-typing);

-  Значительно переработан модуль tracemalloc (https://docs.python.org/3.6/library/tracemalloc.html#module-... расширены средства диагностики ошибок при распределении памяти;
-  В состав стандартной библиотеки включён новый модуль secrets (https://docs.python.org/3.6/library/secrets.html#module-secr... предоставляющий средства для генерации криптографически надёжных псевдослучайных чисел, пригодных для формирования различных ключей и токенов;
-  На платформе Linux при вызове os.urandom() обеспечено ожидание завершения инициализации энтропии для генератора urandom;
-  В модулях  hashlib и ssl добавлена поддержка OpenSSL 1.1.0 (https://www.opennet.ru/opennews/art.shtml?num=45027).
-  Улучшен набор настроек по умолчанию для модуля ssl (https://docs.python.org/3.6/library/ssl.html#module-ssl);
-  В модуль hashlib (https://docs.python.org/3.6/library/hashlib-blake2.html#modu... добавлена поддержка алгоритмов хэширования BLAKE2, SHA-3 и SHAKE, реализована функция формирования ключа  scrypt() (https://ru.wikipedia.org/wiki/Scrypt);

-  Представлена большая порция улучшений, связанных с работой на платформе Windows.


URL: http://www.mail-archive.com/python-announce-list@python...
Новость: https://www.opennet.ru/opennews/art.shtml?num=45755

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру