The OpenNET Project / Index page

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

23.12.2016 23:52  Выпуск языка программирования 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;
  • Определён синтаксис аннотаций для переменных, позволяющий передать интерпретатору информацию о типах переменных. Аннотации сохраняются в атрибуте __annotations__ класса или модуля, но в отличие от языков со статической типизацией не накладывают каких-либо ограничений, а служат для структурирования метаданных, которые могут использоваться сторонними инструментами и библиотеками. Например:
    
       primes: List[int] = []
    
       captain: str  # Note: no initial value!
    
       class Starship:
          stats: Dict[str, int] = {}
    
  • Возможность определения асинхронных генераторов. В прошлой ветке Python 3.5 был реализован новый синтаксис async / await для определения сопрограмм, но в теле одной функции невозможно было одновременно использовать 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)
    
    
  • Добавлена возможность асинхронной обработки списковых включений (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, значительно увеличена производительность и расширена функциональность;
  • Добавлен протокол для определения путей в файловой системе в виде отдельных объектов pathlib. Например:
    
       >>> import pathlib
       >>> with open(pathlib.Path("README")) as f:
       ...     contents = f.read()
    
  • В функции datetime.datetime и datetime.time из модуля datetime добавлен атрибут fold, информирующий о вхождении в неоднозначные промежутки времени, например в промежуток, возникающий при переводе часов на час назад;
  • В разряд стабильных переведён модуль typing;
  • Значительно переработан модуль tracemalloc, расширены средства диагностики ошибок при распределении памяти;
  • В состав стандартной библиотеки включён новый модуль secrets, предоставляющий средства для генерации криптографически надёжных псевдослучайных чисел, пригодных для формирования различных ключей и токенов;
  • На платформе Linux при вызове os.urandom() обеспечено ожидание завершения инициализации энтропии для генератора urandom;
  • В модулях hashlib и ssl добавлена поддержка OpenSSL 1.1.0.
  • Улучшен набор настроек по умолчанию для модуля ssl;
  • В модуль hashlib добавлена поддержка алгоритмов хэширования BLAKE2, SHA-3 и SHAKE, реализована функция формирования ключа scrypt();
  • Представлена большая порция улучшений, связанных с работой на платформе Windows.


  1. Главная ссылка к новости (http://www.mail-archive.com/py...)
  2. OpenNews: Выпуск Pyston 0.6, реализации языка Python с JIT-компилятором
  3. OpenNews: Выпуск Cython 0.25, компилятора для языка Python
  4. OpenNews: Выпуск PyPy3 5.5, реализации Python 3, написанной на языке Python
  5. OpenNews: Увидел свет язык программирования Python 3.5.0
  6. OpenNews: Выпуск языка программирования Python 3.4.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.6, chinarulezzz (ok), 01:00, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Аннотация типов... ммм, представляю сколько костылей навтыкают, прежде чем скажут "готовится python4".
     
     
  • 2.86, ADR (ok), 01:53, 28/12/2016 [^] [ответить]    [к модератору]
  • +/
    А что с ней не так?
     
  • 1.10, Аноним (-), 02:40, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]
  • –6 +/
    > >>> name = "Fred"
       >>> f"He said his name is {name}."

       'He said his name is Fred.'

    не прошло и 20 лет.

     
     
  • 2.17, Гость (??), 05:46, 24/12/2016 [^] [ответить]    [к модератору]
  • –5 +/
    Да уж. Вспомним этот пример из главы 1.2 Кернигана-Ричи:

         PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS);

     
     
  • 3.22, анон (?), 09:35, 24/12/2016 [^] [ответить]    [к модератору]
  • +7 +/
    Спецы по питону набигают
     
  • 3.36, angra (ok), 11:33, 24/12/2016 [^] [ответить]    [к модератору]  
  • +9 +/
    Это давно есть в питоне. Кто-то явно не понял в чем новшество.
     
  • 2.45, Имя (?), 12:57, 24/12/2016 [^] [ответить]    [к модератору]  
  • +4 +/
    оно и раньше было, просто писалось как
    "He said his name is {}.".format (name)
    в фиг. скобках указывается спец. формата.

    или для второго питона
    "He said his name is %s." % name

     
     
  • 3.84, Nas_tradamus (ok), 12:51, 27/12/2016 [^] [ответить]     [к модератору]  
  • +/
    btr mb python2 7 Python 2 7 10 default, Sep 23 2015, 04 34 14 GCC 4 2 1... весь текст скрыт [показать]
     
  • 2.69, oopsy (?), 13:25, 25/12/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Cовершенно c Вами согласен, коллега Не прошло и 20 лет как неосиляторы продавил... весь текст скрыт [показать]
     
  • 1.16, not inkognito (ok), 05:31, 24/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • –6 +/
    Как по мне Разделение символов подчеркиванием Ниочень совсем Вроде всегда ве... весь текст скрыт [показать]
     
     
  • 2.20, Blind Vic (ok), 09:30, 24/12/2016 [^] [ответить]    [к модератору]  
  • +7 +/
    >  вообще всегда  считал символы выделением или разделением с права  на лево по 3 символа

    То, что ты любишь боль, не обязывает других ни к чему

    > даже вроде меньше места занимает хотябы визуально

    Серьезно?

     
     
  • 3.23, Аноним (-), 09:46, 24/12/2016 [^] [ответить]    [к модератору]  
  • +7 +/
    Он просто не в курсе про моноширинные шрифты.
     
  • 2.28, Аноним (-), 10:12, 24/12/2016 [^] [ответить]    [к модератору]  
  • +6 +/
    > ... 1.000.000.000 выглядит намного лучше чем вырвиглазное 1_000_000_000 и даже ...

    Так и сколько Вы это хотели указать 1.0, 1000.0, где там плавающая точка-то стоит? Вы вводите такой записью всех в заблуждение, а это точно не то чего хотят авторы языка и программисты.

    С подчеркиванием конечно компромис, но он никого не вводит в заблуждение.

     
  • 2.34, Anonisimus (?), 11:13, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Точки? А как тогда целые от чисел с плавающей запятой парсер различать должен?
     
  • 2.41, анонимусимус (?), 12:24, 24/12/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    gt оверквотинг удален Ужас Что я только что прочитал Ни в зуб ногой а пор... весь текст скрыт [показать]
     
  • 2.47, adminlocalhost (ok), 14:48, 24/12/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Лучше всего стандартный разделитель штрих использовать 1 000 000 000 Который... весь текст скрыт [показать]
     
     
  • 3.65, Аноним (-), 02:38, 25/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    Нажимаю Shift+Ё, получаю тильду. ЧЯДНТ?
    И сам же использовал одиночный штрих, что на "Э", а не backtick ('), лживый анон.
     
  • 3.75, Аноним (-), 12:20, 26/12/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Запятая же - 1,000,000 00 c Англосаксы Большинство стран выбрали в качестве ... весь текст скрыт [показать]
     
  • 2.48, Аноним (-), 15:10, 24/12/2016 [^] [ответить]    [к модератору]  
  • +/
    В информатике точка является разделителем целой и дробной частей числа. Может, конечно, в вашем вижуальном васике это иначе, а в остальных ЯП это так.
     
     
  • 3.85, Аноним (-), 23:23, 27/12/2016 [^] [ответить]    [к модератору]  
  • +/
    В визуальном васике тоже точка, а про остальные языки вы не правы, среди них есть с другими разделителями.
     
  • 1.19, Blind Vic (ok), 09:27, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Не упомянули, что словари теперь упорядочены

    > The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5).

    https://docs.python.org/3.6/whatsnew/3.6.html#new-dict-implementation

     
     
  • 2.25, Аноним (-), 10:06, 24/12/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    А вот это уже серьезное изменение В целом конечно всем как обычно, но я бы ... весь текст скрыт [показать]
     
     
  • 3.87, ADR (ok), 01:58, 28/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Всегда есть collections.OrderedDict.
     
  • 2.32, Аноним (-), 10:49, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    "new implementation is considered an implementation detail and should not be relied upon"

    Т.е. по сути пока недокументированная возможность, которая может измениться в будущих выпусках.

     
     
  • 3.60, Blind Vic (ok), 23:07, 24/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Я уверен, что это станет стандартом Например, class attribute definition order ... весь текст скрыт [показать]
     
  • 1.21, Аноним (-), 09:31, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Питон становится похож на perl. К чему бы это?
     
     
  • 2.27, Аноним (-), 10:09, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    > Питон становится похож на perl. К чему бы это?

    Ну в целом небольшие скриптики уже можно будет переписать с Perl на Python ;-)

     
     
     
    Часть нити удалена модератором

  • 4.31, анон9 (?), 10:42, 24/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Были-то они давно, только вот кто-то делал методы через прототип, кто-то через к... весь текст скрыт [показать]
     
  • 3.50, leap42 (ok), 15:24, 24/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    зачем? чтобы стали большими? perl был и будет чемпионом в категории "быстрый и 'грязный' скрипт" из-за своей гибкости, лаконичности, мощности и "неприхотливости", а у python другие ниши.
     
     
  • 4.73, Аноним (-), 03:35, 26/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    Это не тебя "всегда посылают на грязную работу", просто ты выполняешь любую работу грязно. ©
     
  • 2.62, Вы забыли заполнить поле Name (?), 23:55, 24/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    > становится похож на perl

    В чем? Увидел знакомые символы подчеркивания в числах?

     
  • 1.33, Аноним (-), 10:59, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    На сколько в этот раз разжиреют дистрибутивы вроде убунты? На сколько помню, каждая версия прибавляет сотню другую.
     
     
  • 2.35, Аноним (-), 11:27, 24/12/2016 [^] [ответить]    [к модератору]  
  • +4 +/
    > На сколько помню

    Насколько помню, "на сколько помню" пишется несколько иначе.

     
     
  • 3.37, Аноним (-), 11:34, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    "На сотню-другую" еще, раз на то пошло.
     
  • 2.39, pda (?), 12:21, 24/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    Прибавляю сотню-другую чего? Килобайт? Нефти? Прибавляют за счёт чего? Новых пакетов точно нет?
     
     
  • 3.46, Аноним (-), 13:39, 24/12/2016 [^] [ответить]    [к модератору]  
  • +/
    По моим наблюдениям речь идет о мегабайтах. В убунте пакеты питона вместе с морем зависимостей сейчас занимают ~1 гиг.
     
  • 2.52, Аноним (-), 16:39, 24/12/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    CODE pkg rquery n- sh python27 python33 python34 python35 python27-66 7MiB ... весь текст скрыт [показать]
     
  • 1.38, saahriktu (ok), 12:20, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Не хватает поддержки переменной окружения $PYTHONPATH3 из коробки. А то всё заточено на $PYTHONPATH, а об неё спотыкается Python 2, который её тоже знает (а заодно и $PYTHONPATH2). Не из коробки Python 3, конечно, можно и сейчас переучить на $PYTHONPATH3, но неофициальными патчами, ломая совместимость с документированным поведением: "sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' PC/getpathp.c && sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' Modules/getpath.c && sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' Mac/IDLE/IDLE.app/Contents/MacOS/IDLE".
     
     
  • 2.40, анонимусимус (?), 12:22, 24/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    Ты на всех форумах об этом уже отписался или еще нет?
     
     
  • 3.42, saahriktu (ok), 12:26, 24/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Как будто что-то плохое. Плохо, наоборот, когда люди приобретают знания и умения, но не хотят ни с кем делиться.
     
     
  • 4.44, Аноним (-), 12:40, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Патчить седом - сурово, сурово.
     
     
  • 5.49, leap42 (ok), 15:19, 24/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    питонисты редко пользуются vi и ещё реже perl'ом, чем им ещё "патчить" если не sed'ом?
     
     
  • 6.51, saahriktu (ok), 16:22, 24/12/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Сразу видно человека, который ни разу не читал LFS Book В ней активно используе... весь текст скрыт [показать]
     
  • 6.57, Crazy Alex (ok), 19:19, 24/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    Питоном?
     
  • 1.43, Аноним (-), 12:39, 24/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    He said his name is Fred Теперь придется ещё тщательнее проверять пользова... весь текст скрыт [показать]
     
     
  • 2.53, Ordu (ok), 17:16, 24/12/2016 [^] [ответить]     [к модератору]  
  • +4 +/
    Засовывать пользовательский ввод в функции типа printf в качестве _форматной_ ст... весь текст скрыт [показать]
     
  • 2.56, FrBrGeorge (ok), 18:57, 24/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    > Теперь придется ещё тщательнее проверять пользовательский ввод

    Вы не можете ввести строку типа f"", только обычный str

     
  • 1.54, chinarulezzz (ok), 18:08, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Хорошо что удалили сообщение о аннотации типов и питон4.

    В php это привело к 7+, в perl к 6 версиям.

     
     
  • 2.58, Crazy Alex (ok), 19:22, 24/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    А куда деваться - с ростом сложности проектов явная типизация становится необход... весь текст скрыт [показать]
     
     
  • 3.61, chinarulezzz (ok), 23:51, 24/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Насчёт документации, Ларри как-то сказал, емнип, что старался насколько это можн... весь текст скрыт [показать]
     
     
  • 4.63, Вы забыли заполнить поле Name (?), 00:05, 25/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    > у perl-коммюнити отличная документация.

    Это вы про простыни документации в перемшку с write-only perl кодом? Фигня это все. Кинул вас Ларри с вашими проблемами и 5-ым перлом.


     
     
  • 5.64, chinarulezzz (ok), 00:13, 25/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Документацию можно выделить в отдельный pod, можно после кода, можно вместе с ко... весь текст скрыт [показать]
     
     
  • 6.67, freehck (ok), 11:31, 25/12/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Да что Вы распинаетесь перед ним Он же вполне ясно дал понять, что с Perl он зн... весь текст скрыт [показать]
     
  • 1.59, Blind Vic (ok), 22:59, 24/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    > Обеспечено сохранение порядка определения атрибутов класса (прядок можно отследить через новый атрибут "__dict__");

    Неверный перевод. Атрибут __dict__ совсем не новый.

    > This order is now preserved in the new class’s __dict__ attribute.

     
  • 1.66, freehck (ok), 11:07, 25/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >>> width = 10
    >>> precision = 4
    >>> value = decimal.Decimal("12.34567")
    >>> f"result: {value:{width}.{precision}}"  # nested fields
    > 'result:      12.35'

    Офигеть, какой очевидный пример. Нет, оно что-то делает, очевидно, но вот что - не понимаю в упор. :)

     
     
  • 2.68, Andrey Mitrofanov (?), 12:54, 25/12/2016 [^] [ответить]     [к модератору]  
  • +/
    sprintf result f , width, precision, value какой-нибудь, наверное Да, s... весь текст скрыт [показать]
     
     
  • 3.70, Stax (ok), 14:50, 25/12/2016 [^] [ответить]     [к модератору]  
  • +4 +/
    Причем тут вообще композиция и прочее Форматированию по имени, а не позиции ст... весь текст скрыт [показать]
     
     
  • 4.74, Аноним (-), 07:32, 26/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Да это же Сишники, что с них взять.
     
  • 3.76, freehck (ok), 12:33, 26/12/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    О, и правда, похоже на то Спасибо ... весь текст скрыт [показать]
     
  • 2.77, Аноним (-), 12:33, 26/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Тут скорее забавен сам метод float to string , когда pecision это количество ци... весь текст скрыт [показать]
     
     
  • 3.83, oopsy (?), 23:19, 26/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Так получилось потому, что используется формат по умолчанию А формат по умолчан... весь текст скрыт [показать]
     
  • 1.72, Аноним (-), 03:06, 26/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • –3 +/
    Обкурились что-ли Было grep 0xFFFFFF -nR Стало find 124 xargs grep ... весь текст скрыт [показать]
     
     
  • 2.78, Аноним (-), 12:34, 26/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Питонисты никогда не страдали заботой о других ... весь текст скрыт [показать]
     
  • 2.79, freehck (ok), 12:36, 26/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Да ладно Это было ещё в perl5, это есть в bash ... весь текст скрыт [показать]
     
  • 1.80, Аноним (-), 15:15, 26/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Мда... Ушел дальше программировать на LISP...
     
     
  • 2.81, Аноним (-), 17:52, 26/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    Не ясно только, чего заходил.
     
     
  • 3.82, Lisp (?), 18:53, 26/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    Посмотреть на мучения хомячков всегда приятно )
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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