Python 3.5¶
Нижче наведено список затверджених PEP для Python 3.5, згрупованих за їх впливом на MicroPython.
Розширення синтаксису | Статус | |
Додаткові узагальнення розпакування | Частково | |
Новий оператор множення матриць | Повністю | |
Корутини з синтаксисом | Повністю | |
Розширення та зміни середовища виконання | ||
% форматування для бінарних рядків | Повністю | |
Повторне виконання системних викликів, що завершились з | Повністю | |
Змінення обробки | Повністю | |
Зміни стандартної бібліотеки | ||
| ||
| Повністю | |
Різні зміни | ||
Покращена підтримка zip-застосунків Python | ||
Підтримка виявлення віртуальних середовищ у Python Launcher | Не актуально | |
Підказки типів (лише рекомендаційні) | Повністю [1] | |
Виключення файлів PYO | Не актуально | |
Перепроєктування завантаження модулів розширень | ||
Інші зміни мови:
Додано обробники помилок namereplace. Обробники помилок backslashreplace тепер працюють із декодуванням і перекладом. | |
Рядки документації властивостей тепер доступні для запису. Це особливо корисно для рядків документації collections.namedtuple(). | |
Циклічні імпорти з відносними імпортами тепер підтримуються. |
Нові модулі:
Зміни у вбудованих модулях:
Клас OrderedDict тепер реалізований на C, що робить його від 4 до 100 разів швидшим. | |
Подання OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() тепер підтримують ітерацію у зворотному порядку за допомогою reversed(). | |
The deque class now defines index(), insert(), and copy(), and supports the + and * operators. | |
Рядки документації, створені namedtuple(), тепер можна оновлювати. | |
Клас UserString тепер реалізує методи __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() та maketrans() для відповідності методам str. | |
Порівняння елементів у merge() тепер можна налаштовувати, передаючи ключову функцію в новому необов’язковому аргументі key, а новий необов’язковий аргумент reverse можна використовувати для реверсного порівняння елементів. | |
Новий метод BufferedIOBase.readinto1(), який використовує щонайбільше один виклик методу RawIOBase.read() або RawIOBase.readinto() нижчого рівня потоку. | |
Декодер JSON тепер генерує JSONDecodeError замість ValueError для надання кращої контекстної інформації про помилку. | |
До модуля math додано дві нові константи: inf та nan. | Повністю |
Нова функція isclose() надає спосіб перевірки наближеної рівності. | |
Додано нову функцію gcd(). Функцію fractions.gcd() оголошено застарілою. | |
Додано нову функцію scandir(), що повертає ітератор об’єктів DirEntry. | |
Функція urandom() тепер використовує системний виклик getrandom() на Linux 3.17 і новіших версіях, та getentropy() на OpenBSD 5.6 і новіших, що усуває необхідність використання /dev/urandom та уникає збоїв через потенційне вичерпання файлових дескрипторів. | |
Нові функції get_blocking() та set_blocking() дозволяють отримувати та встановлювати блокуючий режим файлового дескриптора (O_NONBLOCK). | |
Додано нову функцію os.path.commonpath(), що повертає найдовший спільний підшлях кожного переданого шляху. | |
Посилання та умовні посилання на групи фіксованої довжини тепер дозволені в ретроспективних твердженнях lookbehind. | |
Кількість груп захоплення у регулярних виразах більше не обмежена 100. | |
Функції sub() та subn() тепер замінюють неспівпавші групи порожніми рядками замість генерування виключення. | |
Виключення re.error мають нові атрибути: msg, pattern, pos, lineno та colno, що надають кращу контекстну інформацію про помилку. | |
Функції з тайм-аутами тепер використовують монотонний годинник замість системного. | |
Новий метод socket.sendfile() дозволяє надсилати файл через сокет, використовуючи високопродуктивну функцію os.sendfile() на UNIX, що призводить до швидкості завантаження від 2 до 3 разів вищої, ніж при використанні звичайного socket.send(). | |
Метод socket.sendall() більше не скидає тайм-аут сокету щоразу, коли байти отримуються або надсилаються. Тайм-аут сокету тепер є максимальною загальною тривалістю для надсилання всіх даних. | |
Аргумент backlog методу socket.listen() тепер є необов’язковим. За замовчуванням він встановлений на SOMAXCONN або 128, залежно від того, яке значення менше. | Повністю |
Підтримка Memory BIO | |
Підтримка узгодження протоколу прикладного рівня (ALPN) | |
Додано новий метод SSLSocket.version() для запиту фактичної версії протоколу, що використовується. | |
Клас SSLSocket тепер реалізує метод SSLSocket.sendfile(). | |
Метод SSLSocket.send() тепер генерує виключення ssl.SSLWantReadError або ssl.SSLWantWriteError на неблокуючому сокеті, якщо операція заблокується. Раніше він повертав 0. | |
Функція cert_time_to_seconds() тепер інтерпретує вхідний час як UTC, а не як місцевий час, згідно з RFC 5280. Крім того, повертане значення завжди є цілим числом. | |
Нові методи SSLObject.shared_ciphers() та SSLSocket.shared_ciphers() повертають список шифрів, надісланих клієнтом під час рукостискання. | |
Методи SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() та SSLSocket.write() класу SSLSocket більше не скидають тайм-аут сокету щоразу, коли байти отримуються або надсилаються. | |
Функція match_hostname() тепер підтримує зіставлення IP-адрес. | |
Нова функція set_coroutine_wrapper() дозволяє встановити глобальний хук, який буде викликатися щоразу, коли об’єкт корутини створюється функцією async def. Відповідна функція get_coroutine_wrapper() може бути використана для отримання поточного встановленого обгортки. | |
Нова функція is_finalizing() може бути використана для перевірки того, чи завершує роботу інтерпретатор Python. | |
Функція monotonic() тепер завжди доступна. | |
Примітки