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(). | |
Класс deque теперь определяет index(), insert() и copy() и поддерживает операторы + и *. | |
Строки документации, создаваемые 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(), возвращающая самый длинный общий подпуть для каждого переданного имени пути | |
Ссылки и условные ссылки на группы фиксированной длины теперь разрешены в утверждениях обратного просмотра | |
Количество захватывающих групп в регулярных выражениях больше не ограничено 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. Кроме того, возвращаемое значение всегда является int. | |
Новые методы 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() теперь всегда доступна | |
Примечания