Python 3.6¶
Python 3.6 beta 1 был выпущен 12 сентября 2016 года, а сводку новых возможностей можно найти здесь:
Новые синтаксические возможности |
Статус |
|
Форматирование строковых литералов |
Завершено |
|
Подчёркивания в числовых литералах |
Завершено |
|
Асинхронные генераторы |
||
Синтаксис для аннотаций переменных (предварительный) |
Завершено |
|
Асинхронные включения (comprehensions) |
||
Новые встроенные возможности |
||
Сохранение порядка kwargs в функции |
||
Упрощённая настройка создания класса |
Частично [1] |
|
Сохранение порядка определения атрибутов класса |
||
Изменения в стандартной библиотеке |
||
Устранение неоднозначности локального времени |
||
Добавление модуля secrets в стандартную библиотеку |
||
Добавление протокола путей файловой системы |
||
Внутреннее устройство CPython |
||
Добавление приватной версии в dict |
Не будет реализовано |
|
Добавление API вычисления кадров в CPython |
||
Изменения для Linux/Windows |
||
Сделать |
||
Изменение кодировки консоли Windows на UTF-8 |
||
Изменение кодировки файловой системы Windows на UTF-8 |
||
Прочие изменения языка:
Инструкция global или nonlocal теперь должна текстуально появляться до первого использования соответствующего имени в той же области видимости. Ранее это было SyntaxWarning. |
|
Теперь можно установить специальный метод в None, чтобы указать, что соответствующая операция недоступна. Например, если класс устанавливает __iter__() в None, класс не является итерируемым. |
|
Длинные последовательности повторяющихся строк трассировки теперь сокращаются как [Previous line repeated {count} more times] |
|
Импорт теперь возбуждает новое исключение ModuleNotFoundError, когда не может найти модуль. Код, который в настоящее время проверяет ImportError (в try-except), по-прежнему будет работать. |
|
Методы класса, опирающиеся на super() без аргументов, теперь будут работать корректно при вызове из методов метакласса во время создания класса. |
Изменения во встроенных модулях:
Исчерпанные итераторы array.array теперь останутся исчерпанными, даже если итерируемый массив будет расширен. |
|
Функция b2a_base64() теперь принимает необязательный именованный аргумент newline для управления тем, добавляется ли символ новой строки к возвращаемому значению |
Завершено |
Добавлена новая константа cmath.tau (τ) |
|
Новые константы: cmath.inf и cmath.nan для соответствия math.inf и math.nan, а также cmath.infj и cmath.nanj для соответствия формату, используемому в repr комплексных чисел |
|
Добавлен новый абстрактный базовый класс Collection для представления классов-контейнеров с заданным размером, поддерживающих итерацию |
|
Новый абстрактный базовый класс Reversible представляет итерируемые классы, которые также предоставляют метод __reversed__(). |
|
Новый абстрактный базовый класс AsyncGenerator представляет асинхронные генераторы. |
|
Функция namedtuple() теперь принимает необязательный именованный аргумент module, который, если он задан, используется для атрибута __module__ возвращаемого класса именованного кортежа. |
|
Аргументы verbose и rename функции namedtuple() теперь являются только именованными. |
|
Рекурсивные экземпляры collections.deque теперь можно сериализовать с помощью pickle. |
|
В модуль добавлены хеш-функции BLAKE2. blake2b() и blake2s() всегда доступны и поддерживают полный набор возможностей BLAKE2. |
|
Добавлены хеш-функции SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() и хеш-функции SHAKE shake_128() и shake_256(). |
|
Функция вывода ключа на основе пароля scrypt() теперь доступна с OpenSSL 1.1.0 и новее. |
|
json.load() и json.loads() теперь поддерживают двоичный ввод. Закодированный JSON должен быть представлен с использованием UTF-8, UTF-16 или UTF-32. |
|
Добавлена новая константа math.tau (τ) |
Завершено |
Новый метод close() позволяет явно закрыть итератор scandir(). Итератор scandir() теперь поддерживает протокол менеджера контекста. |
|
В Linux os.urandom() теперь блокируется до тех пор, пока пул энтропии urandom системы не будет инициализирован, для повышения безопасности. |
|
Системный вызов Linux getrandom() (получение случайных байтов) теперь доступен через новую функцию os.getrandom(). |
|
Добавлена поддержка диапазонов модификаторов в регулярных выражениях. Примеры: „(?i:p)ython“ соответствует „python“ и „Python“, но не „PYTHON“; „(?i)g(?-i:v)r“ соответствует „GvR“ и „gvr“, но не „GVR“. |
|
К группам объекта match теперь можно обращаться через __getitem__, что эквивалентно group(). Так, mo[„name“] теперь эквивалентно mo.group(„name“). |
|
Объекты match теперь поддерживают объекты, похожие на индексы, в качестве индексов групп. |
|
Функция ioctl() теперь поддерживает управляющий код SIO_LOOPBACK_FAST_PATH. |
|
Теперь поддерживаются константы getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC и SO_PASSSEC. |
|
setsockopt() теперь поддерживает форму setsockopt(level, optname, None, optlen: int). |
|
Модуль socket теперь поддерживает семейство адресов AF_ALG для взаимодействия с криптографическим API ядра Linux. Добавлены ALG_, SOL_ALG и sendmsg_afalg(). |
|
Добавлены новые константы Linux TCP_USER_TIMEOUT и TCP_CONGESTION. |
|
ssl поддерживает OpenSSL 1.1.0. Минимальная рекомендуемая версия — 1.0.2. |
|
3DES был удалён из набора шифров по умолчанию, и были добавлены наборы шифров ChaCha20 Poly1305. |
|
SSLContext имеет улучшенную конфигурацию по умолчанию для параметров и шифров. |
|
Сессию SSL можно скопировать из одного клиентского соединения в другое с помощью нового класса SSLSession. Возобновление сессии TLS может ускорить первоначальное рукопожатие, снизить задержку и повысить производительность. |
|
Новый метод get_ciphers() можно использовать для получения списка включённых шифров в порядке их приоритета. |
|
Все константы и флаги были преобразованы в IntEnum и IntFlags. |
|
Для SSLContext были добавлены протоколы TLS, специфичные для сервера и клиента. |
|
Добавлен SSLContext.post_handshake_auth для включения и ssl.SSLSocket.verify_client_post_handshake() для инициации пострукопожатной аутентификации TLS 1.3. |
|
теперь поддерживает числа с плавающей точкой половинной точности IEEE 754 через спецификатор формата „e“. |
|
Новая функция getfilesystemencodeerrors() возвращает имя режима обработки ошибок, используемого для преобразования между именами файлов в Unicode и именами файлов в байтах. |
|
Функции compress() и decompress() теперь принимают именованные аргументы |
|
Примечания