Дата выпуска: Oct. 14, 2019
Python версии 3.8
На заметку
С полным списком изменений в версии вы можете ознакомиться на странице «Новое в Python 3.8» (англ.).

Из нового, помимо PEP, упомянутых ниже:

  • PEP-570 — синтаксис для «только-позиционных» аргументов (/);
  • PYTHONPYCACHEPREFIX для указания места хранения байткода;
  • ABI (двоичный интерфейс приложения) стал единым для боевой и отладочной сборки CPython;
  • Форматные строки теперь поддерживают нотацию с =;
  • continue теперь можно использовать в блоках finally;
  • typed_ast влита в CPython.
  • Добавлен модуль importlib.metadata, позволяющий получать метаинформацию о доступных пакетах;
  • В модуле math новые: prod(), isqrt(), dist(), hypot().
  • В модуле statistics новые: fmean(), geometric_mean(), multimode(), quantiles(), NormalDist.
  • Улучшения в ast, asyncio, collections, curses, ctypes, datetime, functools, gc, gettext, gzip, inspect, io, mmap, multiprocessing, os, pathlib, shlex, socket, ssl, sys, threading, time, unicodedata, unittest, weakref, xml,
  • SyntaxWarning теперь предупреждает о неверном использовании is вместо ==, а также умеет предполагать потерю запятой между кортежами, объявленными в списке.

Оптимизация и ускорение



  • Модуль pickle ускорился за счёт использования протокола 4 по умолчанию;
  • Модуль multiprocessing теперь умеет использовать сегменты разделяемой памяти, чем экономит на консервирование при передаче данных между процессами;
  • Инструкция LOAD_GLOBAL теперь использует кеш на уровне кодов операций, поэтому стала работать быстрее на 40%;
  • Адресация атрибутов в именованных кортежах (namedtuple) ускорена по сравнению с 3.7;
  • Списки теперь занимают в среднем на 12% меньше места, когда конструируются из итерируемых объектов известного размера (c __len__());
  • Вдвое ускорена запись переменных класса;
  • На 20-50% ускорен вызов простых встроенных функций, за счёт экономии на конвертации их аргументов;
  • Ускорения и оптимизации в pickle, subprocess, shutil, operator.itemgetter (33%), uuid.

Предложения по улучшению (PEP)
Номер Название Тип Состояние
499 «python -m foo» должен оказаться в «sys.modules[`foo`]» и в «sys.modules[`__main__`]» С Черн.
505 Поддержка None в операторах С Отл.
532 Оператор и протокол обрыва цепи проверок С Отл.
535 Цепочки из «богатых» сравнений С Отл.
544 Протоколы С Утв.
568 Поддержка переменных контекста для генераторов С Отл.
569 График выпуска Python 3.8 И Действ.
572 Синтаксис для привязок имён внутри инструкций С Утв.
573 Доступ к состоянию модуля из методов расширений на C П Действ.
574 Протокол консервирования pickle, версия 5 с поддержкой внеполосных данных С Фин.
575 Унификация классов функций/методов С Отозв.
576 Усовершенствование классов встроенных функций С Отозв.
577 Выражения с дополняющими присвоениями С Отозв.
578 Хуки для аудита Python во время исполнения С Утв.
580 Протокол вызова Си С Откл.
582 Локальная директория для пакетов Python С Черн.
586 Буквальные (literal) типы С Утв.
587 Конфигурирование инициализации Python С Фин.
589 TypedDict: подсказки типов для словарей с строгим набором ключей С Утв.
590 Новое соглашение о вызовах для CPython С Утв.
591 Добавление спецификатора Final в typing С Утв.
601 Запретить return/break/continue в finally С Откл.
  • Ильнур Гайфутдинов
    16 October 17:44
     Ильнур Гайфутдинов про «3.8»
    Списки теперь занимают в среднем на 12% меньше места, когда конструируются из иНТерируемых объектов известного размера (c __len__());

    опечатка :)
На заметку
В соответствующем разделе вы можете зарегистрировать сообщество по интересам, чтобы о нём узнали и другие посетители сайта — возможно, так вы отыщите новых единомышленников и друзей.. И не важно виртуальное оно, или вполне реальное, давно существующее, или только-только придуманное.