Python 3.6¶
Бета-версія Python 3.6 beta 1 була випущена 12 вересня 2016 року. Огляд нових можливостей можна знайти тут:
Нові синтаксичні можливості |
Статус |
|
Форматування рядкових літералів |
Реалізовано |
|
Підкреслення в числових літералах |
Реалізовано |
|
Асинхронні генератори |
||
Синтаксис анотацій змінних (попередній) |
Реалізовано |
|
Асинхронні включення |
||
Нові вбудовані можливості |
||
Збереження порядку 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] |
|
Import тепер генерує нове виключення 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 для взаємодії з crypto 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. |
|
Додано серверні та клієнтські специфічні протоколи TLS для SSLContext. |
|
Додано SSLContext.post_handshake_auth для увімкнення та ssl.SSLSocket.verify_client_post_handshake() для ініціації автентифікації після рукостискання TLS 1.3. |
|
тепер підтримує числа з плаваючою точкою IEEE 754 половинної точності через формат-специфікатор „e“. |
|
Нова функція getfilesystemencodeerrors() повертає назву режиму помилок, що використовується для перетворення між іменами файлів Unicode та байтовими іменами файлів. |
|
Функції compress() та decompress() тепер приймають іменовані аргументи |
|
Примітки