Модуль sys в Python описывается как "ящик с всякой всячиной", содержащий множество разнообразных элементов. В этой статье исследуется, как мог бы выглядеть модуль sys, если бы он был разработан с нуля сегодня. В настоящее время sys имеет более сотни атрибутов, многие из которых являются функциями, что приводит к перегруженному пространству имен. Для решения этой проблемы автор предлагает реорганизовать sys в девять подмодулей.Предлагаемые подмодули включают sys.cli для аргументов командной строки, sys.imports для функций, связанных с модулями, sys.io для стандартного ввода/вывода, sys.repl для настроек интерактивной строки, sys.interpreter для системных деталей и деталей установки, sys.memory для инструментов управления памятью, sys.exceptions для обработки исключений, sys.profile для профилирования и интроспекции, и sys.runtime для поведения интерпретатора. Некоторые атрибуты в этих предлагаемых подмодулях имеют сходство с существующими модулями стандартной библиотеки, намекая на возможность дальнейшей реорганизации.В статье признаются значительные трудности фактической реализации такой реорганизации. В первую очередь, переходный период и поддержание обратной совместимости для существующего кода, который полагается на текущее плоское пространство имен sys, представляют собой серьезные препятствия. Обсуждается техническое решение, включающее обработку атрибутов на уровне модуля, демонстрирующее, как старое плоское пространство имен могло бы быть сохранено для совместимости. Однако автор сомневается, что такая реорганизация когда-либо произойдет из-за огромного количества существующего кода и общего нежелания сообщества Python вносить такие фундаментальные изменения, если это не абсолютно необходимо. Основной вывод для разработчиков заключается в том, что подмодули могут быть полезным инструментом организации для больших модулей "утилит".
sysв Python описывается как "ящик с всякой всячиной", содержащий множество разнообразных элементов. В этой статье исследуется, как мог бы выглядеть модульsys, если бы он был разработан с нуля сегодня. В настоящее времяsysимеет более сотни атрибутов, многие из которых являются функциями, что приводит к перегруженному пространству имен. Для решения этой проблемы автор предлагает реорганизоватьsysв девять подмодулей.Предлагаемые подмодули включаютsys.cliдля аргументов командной строки,sys.importsдля функций, связанных с модулями,sys.ioдля стандартного ввода/вывода,sys.replдля настроек интерактивной строки,sys.interpreterдля системных деталей и деталей установки,sys.memoryдля инструментов управления памятью,sys.exceptionsдля обработки исключений,sys.profileдля профилирования и интроспекции, иsys.runtimeдля поведения интерпретатора. Некоторые атрибуты в этих предлагаемых подмодулях имеют сходство с существующими модулями стандартной библиотеки, намекая на возможность дальнейшей реорганизации.В статье признаются значительные трудности фактической реализации такой реорганизации. В первую очередь, переходный период и поддержание обратной совместимости для существующего кода, который полагается на текущее плоское пространство именsys, представляют собой серьезные препятствия. Обсуждается техническое решение, включающее обработку атрибутов на уровне модуля, демонстрирующее, как старое плоское пространство имен могло бы быть сохранено для совместимости. Однако автор сомневается, что такая реорганизация когда-либо произойдет из-за огромного количества существующего кода и общего нежелания сообщества Python вносить такие фундаментальные изменения, если это не абсолютно необходимо. Основной вывод для разработчиков заключается в том, что подмодули могут быть полезным инструментом организации для больших модулей "утилит".