Python 3.5 был выпущен с поддержкой сопрограмм и нового оператора умножения матриц. .
В последней версии Python появились новые библиотечные модули, а стандартная библиотека была улучшена. Безопасность также была повышена, и появился ряд новых синтаксических функций.
Добавление сопрограмм с async-await означает, что вы можете писать асинхронный код. Выражение await можно использовать для приостановки выполнения сопрограммы до тех пор, пока результат не будет доступен, что делает его поведение последовательным. Похоже, что в наши дни все языки идут по этому пути асинхронности.
Оператор умножения матриц @ был добавлен, чтобы сделать код, в котором вы умножаете матрицы, более чистым и стандартным. Однако, хотя оператор @ infix был добавлен, ни один из встроенных типов Python не реализует его, поэтому вы должны определить __matmul__(), __rmatmul__ () и __imatmul__() для регулярного, отраженного и умножения матрицы на месте.
В новой версии есть два новых библиотечных модуля – typing и zipapps.
Модуль ввода текста добавляет поддержку подсказок типа. Согласно документации What’s New о подсказках типа:
“опыт показал, что большинство аннотаций функций используются для предоставления подсказок типа для параметров функций и возвращаемых значений. Стало очевидно, что для пользователей Python было бы полезно, если бы стандартная библиотека включала базовые определения и инструменты для аннотаций типов.”
Намек на тип, по-видимому, является способом, которым слабо типизированные языки компенсируют отсутствие сильной типизации.
Новый модуль zipapp предоставляет API и инструмент командной строки для создания исполняемых Zip-приложений Python. Zip-приложения существуют с Python 2.6, но о них мало кто знает. Новый модуль означает, что вы можете объединить приложение, поместив все файлы, включая __main__.py файл, в каталог myapp и выполнение двух команд:
$ python -m zipapp myapp
$ python myapp.pyz
Новые встроенные функции добавляют % форматирования в байты и bytearray; и шестнадцатеричный метод был добавлен в байты, bytearray и memoryview. Memoryview теперь поддерживает индексирование кортежей (в том числе многомерных), а генераторы имеют новый атрибут gi_yieldfrom, который возвращает объект, повторяемый по выходу из выражений.
Реализация CPython была улучшена, так что .файлы pyo больше не используются и были заменены более гибкой схемой; и встроенные модули и модули расширения теперь инициализируются в многофазном процессе, который аналогичен тому, как загружаются модули Python.
Стандартная библиотека была значительно улучшена. Коллекции.OrderedDict теперь реализован на языке C, что делает его в 4-100 раз быстрее; модуль ssl теперь поддерживает память BIO, которая отделяет обработку протокола SSL от сетевого ввода-вывода; и функции.функция lru_cache() была в основном переопределена в C, что обеспечивает гораздо лучшую производительность.
Улучшения безопасности означают, что SSLv3 теперь отключен во всей стандартной библиотеке, хотя вы можете включить его. Синтаксический анализ HTTP-файлов cookie теперь более строг для защиты от потенциальных атак инъекций.
Если вы все еще используете Python 2, то это больше, чем время, чтобы перейти к 3.