Что нового в Python 3.1

В статье объясняются новые возможности Python 3.1, по сравнению с Python 3.0

Изменения в языке

Некоторые небольшие изменения внесены в ядро языка программирования Python:

  • Тип int() получил метод bit_length, который возвращает число бит, необходимых для двоичного представления его аргумента:

    >>> n = 37
    >>> bin(37)
    '0b100101'
    >>> n.bit_length()
    6
    >>> n = 2**123-1
    >>> n.bit_length()
    123
    >>> (n+1).bit_length()
    124
    

    (Внесли Fredrik Johansson и Victor Stinner; issue 3439.)

  • Целые числа теперь хранятся внутренне по базе 2**15, либо 2**30, база определяется при билде. Первоначально, целые всегда сохранялись по базе 2**15. Использование базы 2**30 дало значительное улучшение производительности на 64-битных машинах, результаты тестов производительности на 32-битных машинах неоднозначны. Поэтому на 64-битных машинах по умолчанию база устанавливается 2**30, и 2**15 - на 32-битных. На Unix появилась новая опция настройки: –enable-big-digits, которая может использоваться для замены значения по умолчанию.

    Помимо улучшения производительности, это изменение незаметно для конечных пользователей, за одним исключением: для целей тестирования и отладки введена structseq sys.int_info, предоставляющая информацию о внутреннем формате, номер бит на цифру и размер в байтах C-типа, используемого для хранения каждой цифры:

    >>> import sys
    >>> sys.int_info
    sys.int_info(bits_per_digit=30, sizeof_digit=4)
    

    (Внёс Mark Dickinson; issue 4258.)

Оптимизации

Основные добавленные улучшения эффективности:

  • Новая библиотека ввода/вывода (определена в PEP 3116) была по большей части написана на Python и быстро показала, что является узким местом в Python 3.0. В Python 3.1 библиотека ввода/вывода была полностью переписана на C и работает от 2 до 20 раз быстрее, в зависимости от решаемой задачи. Версия на чистом Python осталась доступна для экспериментальных целей в модуле _pyio.

    (Внесли Amaury Forgeot d’Arc и Antoine Pitrou.)

  • Новый флаг конфигурации --with-computed-gotos разрешает более быстрый механизм диспетчеризации кодов операции на тех компиляторах, которые это поддерживают. Отмечено увеличение скорости до 20%, в зависимости от системы и компилятора.

    (Внёс Antoine Pitrou, issue 4753.)

По материалам статьи на docs.python.org

Перевод ООО «Комтет» - Python-хостинг

Вам также может помочь