Python 3.7 Добавляет Классы Обработки Данных


Теперь доступен первый из четырех бета-версий Python 3.7 с новым модулем DataClasses, более простым способом входа в отладчик и режимом UTF-8, который по умолчанию использует кодировку UTF-8.

Запланированная дата общего выпуска Python 3.7-июнь 2018 года, и эта бета-версия завершена для этой окончательной версии.

Первое изменение в Python — это добавление модуля dataclasses. Это предназначено для того, чтобы обеспечить альтернативу тому, как разработчики Python до сих пор использовали шаблонный код для создания экземпляров классов с большим количеством инициализаторов. Новый модуль предоставляет декоратор класса, который проверяет аннотации переменных класса и, основываясь на том, что присутствует, добавляет методы, включая init, repre и eq к lass. Это похоже на набор текста.NamedTuple, но также работает с классами с изменяемыми экземплярами, среди других функций.

Еще одним улучшением в 3.7 является новый API C для локального хранилища потоков в CPython. Уже существовал API C для поддержки локального хранилища потоков; но существующий API локального хранилища потоков (TLS) использовал int для представления ключей TLS на всех платформах. Это прекрасно работало на платформах с официальной поддержкой, но означало, что код не был особенно переносимым.Новое хранилище для конкретных потоков (TSS) использует новый тип Py_tss_t вместо int для представления ключей TSS. Это непрозрачный тип, и его определение может быть сделано специфичным для базовой реализации TLS, так что можно будет построить CPython на платформах, где собственный ключ TLS определен таким образом, что его нельзя безопасно привести к int.

Существует также новая опция командной строки режима разработки и переменная среды Pythondevmode, чтобы включить “режим разработки”CPython. Это вводит дополнительные проверки во время выполнения, которые слишком дороги, чтобы быть включенными по умолчанию. Параметры, активируемые с помощью режима-x dev, включают режим отладки для модуля асинхронных операций, который предлагает более подробное ведение журнала и обработку исключений для асинхронных операций; и отладочные крючки для распределителей памяти. 

Еще одним улучшением является новый режим UTF-8, который заставляет Python игнорировать языковой стандарт и использовать кодировку UTF-8. Python поддерживает обработку строк UTF-8 в течение многих лет, но если локаль установлена в ASCII, это до сих пор переопределяло бы UTF-8.

Существует ряд других улучшений и некоторые улучшения производительности, включая более быстрые вызовы методов, более эффективную оптимизацию констант исходного кода и более быстрое сопоставление в регулярных выражениях, где совпадение не зависит от регистра.


Добавить комментарий