The OpenNET Project

 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ twitter

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, 01:00, 24/12/2016 [ответить] [смотреть все]
  • +/
    Аннотация типов... ммм, представляю сколько костылей навтыкают, прежде чем скажут "готовится python4".
     
     
  • 2.86, ADR, 01:53, 28/12/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    А что с ней не так?
     
  • 1.10, Аноним, 02:40, 24/12/2016 [ответить] [смотреть все]
  • –6 +/
    He said his name is Fred не прошло и 20 лет ... весь текст скрыт [показать]
     
     
  • 2.17, Гость, 05:46, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    Да уж Вспомним этот пример из главы 1 2 Кернигана-Ричи PRINTF 4 0F 6 1... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, анон, 09:35, 24/12/2016 [^] [ответить] [смотреть все]  
  • +7 +/
    Спецы по питону набигают
     
  • 3.36, angra, 11:33, 24/12/2016 [^] [ответить] [смотреть все]  
  • +9 +/
    Это давно есть в питоне. Кто-то явно не понял в чем новшество.
     
  • 2.45, Имя, 12:57, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    оно и раньше было, просто писалось как He said his name is format name ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.84, Nas_tradamus, 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, 05:31, 24/12/2016 [ответить] [смотреть все]  
  • –6 +/
    Как по мне Разделение символов подчеркиванием Ниочень совсем Вроде всегда ве... весь текст скрыт [показать]
     
     
  • 2.20, Blind Vic, 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, 14:48, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Лучше всего стандартный разделитель штрих использовать 1 000 000 000 Который... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.65, Аноним, 02:38, 25/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Нажимаю Shift Ё, получаю тильду ЧЯДНТ И сам же использовал одиночный штрих, чт... весь текст скрыт [показать]
     
  • 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, 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, 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 rel... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.60, Blind Vic, 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 на Python - ... весь текст скрыт [показать] [показать ветку]
     
     
     
    Часть нити удалена модератором

  • 4.31, анон9, 10:42, 24/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Были-то они давно, только вот кто-то делал методы через прототип, кто-то через к... весь текст скрыт [показать]
     
  • 3.50, leap42, 15:24, 24/12/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    зачем чтобы стали большими perl был и будет чемпионом в категории быстрый и ... весь текст скрыт [показать]
     
     
  • 4.73, Аноним, 03:35, 26/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Это не тебя всегда посылают на грязную работу , просто ты выполняешь любую рабо... весь текст скрыт [показать]
     
  • 2.62, Вы забыли заполнить поле Name, 23:55, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    В чем Увидел знакомые символы подчеркивания в числах ... весь текст скрыт [показать] [показать ветку]
     
  • 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 [^] [ответить] [смотреть все]  
  • +/
    По моим наблюдениям речь идет о мегабайтах В убунте пакеты питона вместе с море... весь текст скрыт [показать]
     
  • 2.52, Аноним, 16:39, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    CODE pkg rquery n- sh python27 python33 python34 python35 python27-66 7MiB ... весь текст скрыт [показать] [показать ветку]
     
  • 1.38, saahriktu, 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, 12:26, 24/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Как будто что-то плохое Плохо, наоборот, когда люди приобретают знания и умения... весь текст скрыт [показать]
     
     
  • 4.44, Аноним, 12:40, 24/12/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Патчить седом - сурово, сурово.
     
     
  • 5.49, leap42, 15:19, 24/12/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    питонисты редко пользуются vi и ещё реже perl ом, чем им ещё патчить если не s... весь текст скрыт [показать]
     
     
  • 6.51, saahriktu, 16:22, 24/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Сразу видно человека, который ни разу не читал LFS Book В ней активно используе... весь текст скрыт [показать]
     
  • 6.57, Crazy Alex, 19:19, 24/12/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Питоном?
     
  • 1.43, Аноним, 12:39, 24/12/2016 [ответить] [смотреть все]  
  • –1 +/
    He said his name is Fred Теперь придется ещё тщательнее проверять пользова... весь текст скрыт [показать]
     
     
  • 2.53, Ordu, 17:16, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Засовывать пользовательский ввод в функции типа printf в качестве _форматной_ ст... весь текст скрыт [показать] [показать ветку]
     
  • 2.56, FrBrGeorge, 18:57, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Вы не можете ввести строку типа f , только обычный str... весь текст скрыт [показать] [показать ветку]
     
  • 1.54, chinarulezzz, 18:08, 24/12/2016 [ответить] [смотреть все]  
  • +/
    Хорошо что удалили сообщение о аннотации типов и питон4.

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

     
     
  • 2.58, Crazy Alex, 19:22, 24/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    А куда деваться - с ростом сложности проектов явная типизация становится необход... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.61, chinarulezzz, 23:51, 24/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Насчёт документации, Ларри как-то сказал, емнип, что старался насколько это можн... весь текст скрыт [показать]
     
     
  • 4.63, Вы забыли заполнить поле Name, 00:05, 25/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Это вы про простыни документации в перемшку с write-only perl кодом Фигня это в... весь текст скрыт [показать]
     
     
  • 5.64, chinarulezzz, 00:13, 25/12/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Документацию можно выделить в отдельный pod, можно после кода, можно вместе с ко... весь текст скрыт [показать]
     
     
  • 6.67, freehck, 11:31, 25/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Да что Вы распинаетесь перед ним Он же вполне ясно дал понять, что с Perl он зн... весь текст скрыт [показать]
     
  • 1.59, Blind Vic, 22:59, 24/12/2016 [ответить] [смотреть все]  
  • +1 +/
    > Обеспечено сохранение порядка определения атрибутов класса (прядок можно отследить через новый атрибут "__dict__");

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

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

     
  • 1.66, freehck, 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, 14:50, 25/12/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    Причем тут вообще композиция и прочее Форматированию по имени, а не позиции ст... весь текст скрыт [показать]
     
     
  • 4.74, Аноним, 07:32, 26/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Да это же Сишники, что с них взять.
     
  • 3.76, freehck, 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, 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-2016 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by BSH TopList