Перейти к содержимому

sys – Системные параметры и функции


Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, которые тесно взаимодействуют с интерпретатором. Он всегда доступен. Если явно не указано иное, все переменные доступны только для чтения.

sys.abi_info

Добавлено в версии 3.15.

Объект, содержащий информацию об ABI текущего выполняющегося интерпретатора Python. Он должен включать информацию, влияющую на CPython ABI таким образом, что требуется конкретная сборка интерпретатора, выбранная из вариантов, которые могут сосуществовать на одной машине. Например, он не кодирует базовую ОС (Linux или Windows), но включает размер указателя, поскольку некоторые системы поддерживают как 32-, так и 64-битные сборки. Доступные записи одинаковы на всех платформах; например, pointer_size доступен даже на архитектурах только с 64 битами.

Доступны следующие атрибуты:

abi_info.pointer_bits

Ширина указателей в битах как целое число, эквивалентное 8 * sizeof(void *). Обычно это 32 или 64.

abi_info.free_threaded

Логическое значение, указывающее, был ли интерпретатор собран с поддержкой свободной многопоточности. Это отражает либо наличие опции --disable-gil configure (в Unix), либо установку свойства DisableGil (в Windows).

abi_info.debug

Логическое значение, указывающее, был ли интерпретатор собран в режиме отладки. Это отражает либо наличие опции --with-pydebug configure (в Unix), либо конфигурации Debug (в Windows).

abi_info.byteorder

Строка, указывающая нативный порядок байтов: 'big' или 'little'. Это то же самое, что и атрибут byteorder.

sys.abiflags

В системах POSIX, где Python был собран со стандартным сценарием configure, он содержит флаги ABI, как указано в PEP 3149.

Добавлено в версии 3.2.

Изменено в версии 3.8: Флаги по умолчанию стали пустой строкой (флаг m для pymalloc был удалён).

sys.addaudithook(hook)

Добавляет вызываемый объект hook в список активных аудиторских хуков для текущего (под)интерпретатора.

Когда событие аудита инициируется через функцию sys.audit(), каждый хук вызывается в порядке его добавления с именем события и кортежем аргументов. Собственные (native) хуки, добавленные с помощью PySys_AddAuditHook(), вызываются первыми, за ними следуют хуки, добавленные в текущем (под)интерпретаторе. Затем хуки могут регистрировать событие, вызывать исключение для прерывания операции или полностью завершать процесс.

Обратите внимание, что аудиторские хуки предназначены в первую очередь для сбора информации о внутренних или иным образом ненаблюдаемых действиях, будь то в Python или библиотеках, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может тривиально отключать или обходить хуки, добавленные с помощью этой функции. Как минимум, любые критичные с точки зрения безопасности хуки должны быть добавлены с помощью C API PySys_AddAuditHook() до инициализации среды выполнения, а любые модули, допускающие произвольное изменение памяти (например, ctypes), должны быть полностью удалены или находиться под тщательным контролем.

Вызов sys.addaudithook() сам по себе вызывает событие аудита с именем sys.addaudithook без аргументов. Если какой-либо существующий хук вызывает исключение, производное от RuntimeError, новый хук не будет добавлен, а исключение будет подавлено. В результате вызывающая сторона не может предполагать, что её хук был добавлен, если только она не контролирует все существующие хуки.

Смотрите таблицу событий аудита для всех событий, вызываемых CPython, и PEP 578 для обсуждения оригинального дизайна.

Добавлено в версии 3.8.

Изменено в версии 3.8.1: Исключения, производные от Exception, но не от RuntimeError, больше не подавляются.

Особенность реализации CPython: Когда трассировка включена (см. settrace()), хуки Python трассируются только в том случае, если вызываемый объект имеет свойство __cantrace__, установленное в истинное значение. В противном случае функции трассировки пропускают хук.

sys.argv

Список аргументов командной строки, переданных сценарию Python. argv[0] – это имя сценария (зависит от операционной системы, является ли это полным путём или нет). Если команда была выполнена с использованием опции командной строки -c интерпретатора, argv[0] устанавливается в строку '-c'. Если интерпретатору Python не было передано имя сценария, argv[0] – пустая строка.

Для перебора стандартного ввода или списка файлов, переданных в командной строке, обратитесь к модулю fileinput.

См. также sys.orig_argv.

Примечание

В Unix аргументы командной строки передаются от ОС в виде байтов. Python декодирует их, используя кодировку файловой системы и обработчик ошибок «surrogateescape». Когда необходимы исходные байты, их можно получить с помощью [os.fsencode(arg) for arg in sys.argv].

sys.audit(event, *args)

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

Например, одно событие аудита называется os.chdir. Это событие имеет один аргумент с именем path, который будет содержать запрошенный новый рабочий каталог.

sys.audit() вызовет существующие аудиторные хуки, передавая имя события и аргументы, и повторно возбудит первое исключение из любого хука. В общем случае, если исключение возникло, его не следует обрабатывать, и процесс должен быть завершён как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто зарегистрировать событие или прервать операцию, возбудив исключение.

Хуки добавляются с помощью функций sys.addaudithook() или PySys_AddAuditHook().

Нативным эквивалентом этой функции является PySys_Audit(). По возможности предпочтительнее использовать нативную функцию.

См. таблицу аудиторных событий для всех событий, возбуждаемых CPython.

Добавлено в версии 3.8.

sys.base_exec_prefix

Эквивалентно exec_prefix, но относится к базовой установке Python.

При работе в виртуальных окружениях exec_prefix перезаписывается в префикс виртуального окружения. base_exec_prefix, напротив, не изменяется и всегда указывает на базовую установку Python. Обратитесь к виртуальным окружениям для получения дополнительной информации.

Добавлено в версии 3.3.

sys.base_prefix

Эквивалентно prefix, но относится к базовой установке Python.

При работе в виртуальном окружении prefix перезаписывается в префикс виртуального окружения. base_prefix, напротив, не изменяется и всегда указывает на базовую установку Python. Обратитесь к виртуальным окружениям для получения дополнительной информации.

Добавлено в версии 3.3.

sys.byteorder

Индикатор нативного порядка байтов. Он будет иметь значение 'big' на платформах с обратным порядком байтов (big-endian, от старшего к младшему), и 'little' на платформах с прямым порядком байтов (little-endian, от младшего к старшему).

sys.builtin_module_names

Кортеж строк, содержащий имена всех модулей, скомпилированных в этот интерпретатор Python. (Эта информация недоступна никаким другим способом – modules.keys() перечисляет только импортированные модули.)

См. также список sys.stdlib_module_names.

sys.call_tracing(func, args)

Вызывает func(*args), пока трассировка включена. Состояние трассировки сохраняется и восстанавливается после. Это предназначено для вызова из отладчика из контрольной точки, чтобы рекурсивно отлаживать или профилировать другой код.

Трассировка приостанавливается при вызове функции трассировки, установленной с помощью settrace() или setprofile(), чтобы избежать бесконечной рекурсии. call_tracing() включает явную рекурсию функции трассировки.

sys.copyright

Строка, содержащая авторские права, относящиеся к интерпретатору Python.

sys._clear_type_cache()

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

Эта функция должна использоваться только для внутренних и специализированных целей.

Устарело с версии 3.13: Вместо этого используйте более общую функцию _clear_internal_caches().

sys._clear_internal_caches()

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

Добавлено в версии 3.13.

sys._current_frames()

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

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

Эта функция должна использоваться только для внутренних и специализированных целей.

Вызывает событие аудита sys._current_frames без аргументов.

sys._current_exceptions()

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

Наиболее полезен для статистического профилирования.

Эту функцию следует использовать только для внутренних и специальных целей.

Вызывает событие аудита sys._current_exceptions без аргументов.

Изменено в версии 3.12: Каждое значение в словаре теперь является одним экземпляром исключения, а не кортежем из 3 элементов, как возвращается из sys.exc_info().

sys.breakpointhook()

Эта функция-перехватчик вызывается встроенной breakpoint(). По умолчанию она запускает отладчик pdb, но может быть установлена на любую другую функцию, чтобы можно было выбрать используемый отладчик.

Сигнатура этой функции зависит от того, что она вызывает. Например, привязка по умолчанию (например, pdb.set_trace()) не ожидает аргументов, но её можно привязать к функции, ожидающей дополнительные аргументы (позиционные и/или ключевые). Встроенная функция breakpoint() передаёт свои *args и **kws напрямую. То, что возвращает breakpointhooks(), возвращается из breakpoint().

Реализация по умолчанию сначала проверяет переменную окружения PYTHONBREAKPOINT. Если она установлена в "0", то эта функция немедленно возвращает управление; то есть это холостая операция. Если переменная окружения не установлена или установлена в пустую строку, вызывается pdb.set_trace(). В противном случае эта переменная должна задавать имя функции для выполнения, используя точечную нотацию импорта Python, например package.subpackage.module.function. В этом случае package.subpackage.module будет импортирован, и результирующий модуль должен иметь вызываемый объект с именем function(). Он выполняется с передачей *args и **kws, и то, что возвращает function(), sys.breakpointhook() возвращает встроенной функции breakpoint().

Обратите внимание, что если при импорте вызываемого объекта, заданного PYTHONBREAKPOINT, что-то идёт не так, сообщается о RuntimeWarning, и точка останова игнорируется.

Также обратите внимание, что если sys.breakpointhook() переопределён программно, PYTHONBREAKPOINT не учитывается.

Добавлено в версии 3.7.

sys._debugmallocstats()

Выводит низкоуровневую информацию в stderr о состоянии распределителя памяти CPython.

Если Python собран в режиме отладки (configure --with-pydebug option), он также выполняет некоторые ресурсоёмкие проверки внутренней согласованности.

Добавлено в версии 3.3.

Особенность реализации CPython: Эта функция специфична для CPython. Точный формат вывода здесь не определён и может измениться.

sys.dllhandle

Целое число, задающее дескриптор DLL Python.

sys.displayhook(value)

Если value не равно None, эта функция выводит repr(value) в sys.stdout и сохраняет value в builtins._. Если repr(value) не кодируется в sys.stdout.encoding с обработчиком ошибок sys.stdout.errors (который, вероятно, 'strict'), кодирует его в sys.stdout.encoding с обработчиком ошибок 'backslashreplace'.

sys.displayhook вызывается для результата вычисления выражения, введённого в интерактивном сеансе Python. Отображение этих значений можно настроить, присвоив другую функцию с одним аргументом sys.displayhook.

Псевдокод:

python
def displayhook(value):
    if value is None:
        return
    # Установите '_' в None, чтобы избежать рекурсии
    builtins._ = None
    text = repr(value)
    try:
        sys.stdout.write(text)
    except UnicodeEncodeError:
        bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
        if hasattr(sys.stdout, 'buffer'):
            sys.stdout.buffer.write(bytes)
        else:
            text = bytes.decode(sys.stdout.encoding, 'strict')
            sys.stdout.write(text)
    sys.stdout.write("\n")
    builtins._ = value

Изменено в версии 3.2: Используйте обработчик ошибок 'backslashreplace' для UnicodeEncodeError.

sys.dont_write_bytecode

Если это истина, Python не будет пытаться записывать файлы .pyc при импорте исходных модулей. Это значение изначально устанавливается в True или False в зависимости от параметра командной строки -B и переменной окружения PYTHONDONTWRITEBYTECODE, но его можно установить самостоятельно для управления генерацией файлов байт-кода.

sys._emscripten_info

Именованный кортеж, содержащий информацию об окружении на платформе wasm32-emscripten. Именованный кортеж является предварительным и может измениться в будущем.

_emscripten_info.emscripten_version

Версия Emscripten в виде кортежа целых чисел (major, minor, micro), например (3, 1, 8).

_emscripten_info.runtime

Строка среды выполнения, например, user agent браузера, 'Node.js v14.18.2' или 'UNKNOWN'.

_emscripten_info.pthreads

True, если Python скомпилирован с поддержкой Emscripten pthreads.

_emscripten_info.shared_memory

True, если Python скомпилирован с поддержкой разделяемой памяти.

Доступность: Emscripten.

Добавлено в версии 3.11.

sys.pycache_prefix

Если этот параметр установлен (не None), Python будет записывать файлы .pyc кеша байт-кода в параллельное дерево каталогов с корнем в этом каталоге (и читать их оттуда), а не из каталогов __pycache__ в дереве исходного кода. Любые каталоги __pycache__ в дереве исходного кода будут игнорироваться, а новые файлы .pyc будут записываться внутри префикса pycache. Таким образом, при использовании compileall в качестве этапа предварительной сборки необходимо убедиться, что он запускается с тем же префиксом pycache (если он есть), который будет использоваться во время выполнения.

Относительный путь интерпретируется относительно текущего рабочего каталога.

Это значение изначально устанавливается на основе значения параметра командной строки -X pycache_prefix=PATH или переменной окружения PYTHONPYCACHEPREFIX (командная строка имеет приоритет). Если ни то, ни другое не установлено, оно равно None.

Добавлено в версии 3.8.

sys.excepthook(type, value, traceback)

Эта функция выводит заданный traceback и исключение в sys.stderr.

Когда возникает и не перехватывается исключение, отличное от SystemExit, интерпретатор вызывает sys.excepthook с тремя аргументами: классом исключения, экземпляром исключения и объектом traceback. В интерактивном сеансе это происходит непосредственно перед возвратом управления в приглашение; в программе Python – непосредственно перед завершением программы. Обработку таких исключений верхнего уровня можно настроить, присвоив другую трёхаргументную функцию переменной sys.excepthook.

Возбуждает событие аудита sys.excepthook с аргументами hook, type, value, traceback при возникновении неперехваченного исключения. Если хук не установлен, hook может быть None. Если любой хук возбуждает исключение, производное от RuntimeError, вызов хука будет подавлен. В противном случае исключение аудит-хука будет зарегистрировано как неперехватываемое, и будет вызвана sys.excepthook.

Смотрите также

Функция sys.unraisablehook() обрабатывает неперехватываемые исключения, а функция threading.excepthook() обрабатывает исключения, возбуждённые threading.Thread.run().

sys.__breakpointhook__
sys.__displayhook__
sys.__excepthook__
sys.__unraisablehook__

Эти объекты содержат исходные значения breakpointhook, displayhook, excepthook и unraisablehook на момент запуска программы. Они сохраняются, чтобы breakpointhook, displayhook, excepthook и unraisablehook можно было восстановить, если они будут заменены сломанными или альтернативными объектами.

Добавлено в версии 3.7: __breakpointhook__

Добавлено в версии 3.8: __unraisablehook__

sys.exception()

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

Если ни один обработчик исключений не выполняется, эта функция возвращает None.

Добавлено в версии 3.11.

sys.exc_info()

Эта функция возвращает представление обработанного исключения в старом стиле. Если в данный момент обрабатывается исключение e (так что exception() вернёт e), exc_info() возвращает кортеж (type(e), e, e.__traceback__). То есть кортеж, содержащий тип исключения (подкласс BaseException), само исключение и объект traceback, который обычно инкапсулирует стек вызовов в точке, где произошло последнее исключение.

Если нигде в стеке не обрабатывается исключение, эта функция возвращает кортеж, содержащий три значения None.

Изменено в версии 3.11: Поля type и traceback теперь выводятся из value (экземпляра исключения), поэтому при изменении исключения во время его обработки изменения отражаются в результатах последующих вызовов exc_info().

sys.exec_prefix

Строка, содержащая префикс каталога, специфичный для данного сайта, в который устанавливаются платформо-зависимые файлы Python; по умолчанию это также '/usr/local'. Этот префикс можно задать во время сборки с помощью аргумента --exec-prefix сценария configure. В частности, все конфигурационные файлы (например, файл заголовка pyconfig.h) устанавливаются в каталог exec_prefix/lib/pythonX.Y/config, а модули разделяемых библиотек устанавливаются в exec_prefix/lib/pythonX.Y/lib-dynload, где X.Y – номер версии Python, например 3.2.

Примечание

Если действует виртуальное окружение, этот exec_prefix будет указывать на виртуальное окружение. Значение для установки Python по-прежнему доступно через base_exec_prefix. За дополнительной информацией обращайтесь к Виртуальные окружения.

Изменено в версии 3.14: При работе в виртуальном окружении, prefix и exec_prefix теперь устанавливаются в префикс виртуального окружения с помощью инициализации путей, а не site. Это означает, что prefix и exec_prefix всегда указывают на виртуальное окружение, даже если site отключено (-S).

sys.executable

Строка, содержащая абсолютный путь к исполняемому двоичному файлу интерпретатора Python на системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу, sys.executable будет пустой строкой или None.

sys.exit([arg])

Возбуждает исключение SystemExit, сигнализирующее о намерении выйти из интерпретатора.

Необязательный аргумент arg может быть целым числом, задающим код возврата (по умолчанию 0), или объектом другого типа. Если это целое число, то 0 считается «успешным завершением», а любое ненулевое значение считается «аварийным завершением» в оболочках и подобных системах. Большинство систем требуют, чтобы код возврата находился в диапазоне 0–127, иначе результат не определён. В некоторых системах существует соглашение о присвоении определённых значений определённым кодам возврата, но такие соглашения обычно неразвиты; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех остальных ошибок. Если передан объект другого типа, то вызов None эквивалентен передаче нуля, а любой другой объект выводится в stderr, при этом код возврата становится 1. В частности, sys.exit("some error message") – это быстрый способ завершить программу при возникновении ошибки.

Поскольку exit() в конечном счёте «всего лишь» возбуждает исключение, он завершает процесс только при вызове из главного потока, при условии, что исключение не перехватывается. Действия по очистке, заданные в предложениях finally операторов try, выполняются, и существует возможность перехватить попытку выхода на внешнем уровне.

Изменено в версии 3.6: Если во время очистки после перехвата SystemExit интерпретатором Python происходит ошибка (например, ошибка сброса буферизованных данных в стандартных потоках), код возврата изменяется на 120.

sys.flags

Именованный кортеж flags предоставляет состояние флагов командной строки. К флагам следует обращаться только по имени, а не по индексу. Атрибуты доступны только для чтения.

flags.debug

-d

flags.inspect

-i

flags.interactive

-i

flags.isolated

-I

flags.optimize

-O или -OO

flags.dont_write_bytecode

-B

flags.no_user_site

-s

flags.no_site

-S

flags.ignore_environment

-E

flags.verbose

-v

flags.bytes_warning

-b

flags.quiet

-q

flags.hash_randomization

-R

flags.dev_mode

-X dev (Режим разработки Python)

flags.utf8_mode

-X utf8

flags.safe_path

-P

flags.int_max_str_digits

-X int_max_str_digits (ограничение длины при преобразовании целого числа в строку)

flags.warn_default_encoding

-X warn_default_encoding

flags.gil

-X gil и PYTHON_GIL

flags.thread_inherit_context

-X thread_inherit_context и PYTHON_THREAD_INHERIT_CONTEXT

flags.context_aware_warnings

-X context_aware_warnings и PYTHON_CONTEXT_AWARE_WARNINGS

Изменено в версии 3.2: Добавлен атрибут quiet для нового флага -q.

Добавлено в версии 3.2.3: Атрибут hash_randomization.

Изменено в версии 3.3: Удалён устаревший атрибут division_warning.

Изменено в версии 3.4: Добавлен атрибут isolated для флага -I isolated.

Изменено в версии 3.7: Добавлен атрибут dev_mode для нового режима Python Development Mode и атрибут utf8_mode для нового флага -X utf8.

Изменено в версии 3.10: Добавлен атрибут warn_default_encoding для флага -X warn_default_encoding.

Изменено в версии 3.11: Добавлен атрибут safe_path для опции -P.

Изменено в версии 3.11: Добавлен атрибут int_max_str_digits.

Изменено в версии 3.13: Добавлен атрибут gil.

Изменено в версии 3.14: Добавлен атрибут thread_inherit_context.

Изменено в версии 3.14: Добавлен атрибут context_aware_warnings.

sys.float_info

Именованный кортеж, содержащий информацию о типе float. Он содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей точкой, определённым в стандартном заголовочном файле float.h для языка программирования C; см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 года [C99], «Характеристики типов с плавающей точкой», для подробностей.

Атрибуты float_info именованного кортежа

атрибут

макрос float.h

объяснение

float_info.epsilon

DBL_EPSILON

разница между 1.0 и наименьшим значением, превышающим 1.0, представимым в виде float.

См. также math.ulp().

float_info.dig

DBL_DIG

Максимальное количество десятичных цифр, которое может быть точно представлено в float; см. ниже.

float_info.mant_dig

DBL_MANT_DIG

Точность float: количество цифр по основанию radix в мантиссе числа float.

float_info.max

DBL_MAX

Максимальное представимое положительное конечное число типа float.

float_info.max_exp

DBL_MAX_EXP

Максимальное целое число e, такое что radix**(e-1) является представимым конечным числом float.

float_info.max_10_exp

DBL_MAX_10_EXP

Максимальное целое число e, такое что 10**e находится в диапазоне представимых конечных чисел с плавающей запятой.

float_info.min

DBL_MIN

Минимальное представимое положительное нормализованное число float.

Используйте math.ulp(0.0), чтобы получить наименьшее положительное денормализованное представимое число float.

float_info.min_exp

DBL_MIN_EXP

Наименьшее целое число e, для которого radix**(e-1) является нормализованным числом с плавающей запятой.

float_info.min_10_exp

DBL_MIN_10_EXP

Наименьшее целое число e, для которого 10**e является нормализованным числом с плавающей запятой.

float_info.radix

FLT_RADIX

Основание (radix) представления экспоненты.

float_info.rounds

FLT_ROUNDS

Целое число, представляющее режим округления для арифметики с плавающей запятой. Оно отражает значение макроса системы FLT_ROUNDS на момент запуска интерпретатора:

  • -1: неопределяемо

  • 0: к нулю

  • 1: к ближайшему

  • 2: к положительной бесконечности

  • 3: к отрицательной бесконечности

Все остальные значения для FLT_ROUNDS характеризуют поведение округления, определяемое реализацией.

Атрибут sys.float_info.dig требует дополнительного пояснения. Если s – это любая строка, представляющая десятичное число с не более чем sys.float_info.dig значащими цифрами, то преобразование s в число с плавающей запятой и обратно восстановит строку, представляющую то же десятичное значение:

python
>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # десятичная строка с 15 значащими цифрами
>>> format(float(s), '.15g')  # преобразовать во float и обратно -> то же значение
'3.14159265358979'

Но для строк с более чем sys.float_info.dig значащими цифрами это верно не всегда:

python
>>> s = '9876543211234567'    # 16 значащих цифр — слишком много!
>>> format(float(s), '.16g')  # преобразование изменяет значение
'9876543211234568'
sys.float_repr_style

Строка, указывающая, как функция repr() ведёт себя для чисел с плавающей запятой. Если строка имеет значение 'short', то для конечного числа с плавающей запятой x функция repr(x) стремится создать короткую строку, обладающую тем свойством, что float(repr(x)) == x. Это обычное поведение в Python 3.1 и новее. В противном случае float_repr_style имеет значение 'legacy' и repr(x) ведёт себя так же, как в версиях Python до 3.1.

Добавлено в версии 3.1.

sys.getallocatedblocks()

Возвращает количество блоков памяти, выделенных в данный момент интерпретатором, независимо от их размера. Эта функция в основном полезна для отслеживания и отладки утечек памяти. Из-за внутренних кэшей интерпретатора результат может отличаться от вызова к вызову; возможно, потребуется вызвать _clear_internal_caches() и gc.collect(), чтобы получить более предсказуемые результаты.

Если сборка или реализация Python не может разумно вычислить эту информацию, getallocatedblocks() может вместо этого вернуть 0.

Добавлено в версии 3.4.

sys.getunicodeinternedsize()

Возвращает количество интернированных объектов Unicode.

Добавлено в версии 3.12.

sys.getandroidapilevel()

Возвращает уровень API Android на момент сборки в виде целого числа. Он представляет минимальную версию Android, на которой может работать данная сборка Python. Информацию о версии времени выполнения см. в platform.android_ver().

Добавлено в версии 3.7.

sys.getdefaultencoding()

Возвращает 'utf-8'. Это имя кодировки строк по умолчанию, используемой в таких методах, как str.encode().

sys.getdlopenflags()

Возвращает текущее значение флагов, используемых для вызовов dlopen(). Символические имена значений флагов можно найти в модуле os (константы RTLD_xxx, например os.RTLD_LAZY).

sys.getfilesystemencoding()

Возвращает кодировку файловой системы: кодировку, используемую с обработчиком ошибок файловой системы для преобразования между именами файлов в Unicode и байтовыми именами файлов. Обработчик ошибок файловой системы возвращается из getfilesystemencodeerrors().

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

os.fsencode() и os.fsdecode() следует использовать, чтобы гарантировать использование правильной кодировки и режима обработки ошибок.

Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors из PyConfig.

Изменено в версии 3.2: результат getfilesystemencoding() больше не может быть None.

Изменено в версии 3.6: Windows больше не гарантирует возврат 'mbcs'. См. PEP 529 и _enablelegacywindowsfsencoding() для получения дополнительной информации.

Изменено в версии 3.7: Возвращает 'utf-8', если включён Python UTF-8 Mode.

sys.getfilesystemencodeerrors()

Возвращает обработчик ошибок файловой системы: обработчик ошибок, используемый вместе с кодировкой файловой системы для преобразования между именами файлов в Unicode и в bytes. Кодировка файловой системы возвращается из getfilesystemencoding().

os.fsencode() и os.fsdecode() следует использовать, чтобы гарантировать использование правильной кодировки и режима обработки ошибок.

Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors из PyConfig.

Добавлено в версии 3.6.

sys.get_int_max_str_digits()

Возвращает текущее значение ограничения длины преобразования целого числа в строку. См. также set_int_max_str_digits().

Добавлено в версии 3.11.

sys.get_lazy_imports()

Возвращает текущий режим ленивых импортов в виде строки.

  • "normal": только импорты, явно помеченные ключевым словом lazy, являются ленивыми

  • "all": все импорты верхнего уровня потенциально ленивы

  • "none": все ленивые импорты подавлены (даже явно помеченные)

См. также set_lazy_imports() и PEP 810.

Добавлено в версии 3.15.

sys.get_lazy_imports_filter()

Возвращает текущую функцию фильтра ленивых импортов или None, если фильтр не установлен.

Функция фильтра вызывается для каждого потенциально ленивого импорта, чтобы определить, должен ли он на самом деле быть ленивым. Подробнее о сигнатуре функции фильтра см. set_lazy_imports_filter().

Добавлено в версии 3.15.

sys.getrefcount(object)

Возвращает счётчик ссылок на объект. Возвращаемое значение обычно на единицу больше ожидаемого, поскольку включает (временную) ссылку как аргумент getrefcount().

Обратите внимание, что возвращаемое значение может не отражать реальное количество ссылок на объект. Например, некоторые объекты являются бессмертными и имеют очень высокий счётчик ссылок, который не соответствует действительному числу ссылок. Следовательно, не полагайтесь на точность возвращаемого значения, за исключением значений 0 или 1.

Особенность реализации CPython: Бессмертные объекты с большим счётчиком ссылок можно определить с помощью _is_immortal().

Изменено в версии 3.12: Бессмертные объекты имеют очень большие счётчики ссылок, не соответствующие действительному числу ссылок на объект.

sys.getrecursionlimit()

Возвращает текущее значение предела рекурсии – максимальной глубины стека интерпретатора Python. Этот предел предотвращает переполнение стека C из-за бесконечной рекурсии и аварийное завершение Python. Его можно установить с помощью setrecursionlimit().

sys.getsizeof(object[, default])

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

Учитывается только потребление памяти, непосредственно относящееся к объекту, а не потребление памяти объектов, на которые он ссылается.

Если указан, будет возвращён default, если объект не предоставляет способа получить размер. В противном случае будет возбуждено TypeError.

getsizeof() вызывает метод __sizeof__ объекта и добавляет дополнительные накладные расходы сборщика мусора, если объект управляется сборщиком мусора.

См. рецепт рекурсивного sizeof для примера рекурсивного использования getsizeof() для определения размера контейнеров и всего их содержимого.

sys.getswitchinterval()

Возвращает интервал переключения потоков интерпретатора в секундах; см. setswitchinterval().

Добавлено в версии 3.2.

sys._getframe([depth])

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

Вызывает событие аудита sys._getframe с аргументом frame.

Особенность реализации CPython: Эту функцию следует использовать только для внутренних и специализированных целей. Не гарантируется, что она существует во всех реализациях Python.

sys._getframemodulename([depth])

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

Вызывает событие аудита sys._getframemodulename с аргументом depth.

Особенность реализации CPython: Эту функцию следует использовать только для внутренних и специализированных целей. Не гарантируется, что она существует во всех реализациях Python.

Добавлено в версии 3.12.

sys.getobjects(limit[, type])

Эта функция существует только в том случае, если CPython был собран с использованием специальной опции configure --with-trace-refs. Она предназначена только для отладки проблем сборки мусора.

Возвращает список до limit динамически выделенных объектов Python. Если указан type, включаются только объекты именно этого типа (не подтипы).

Объекты из списка небезопасны для использования. В частности, результат будет включать объекты из всех интерпретаторов, которые совместно используют состояние своего аллокатора объектов (то есть созданные с PyInterpreterConfig.use_main_obmalloc, установленным в 1, или с использованием Py_NewInterpreter(), а также главный интерпретатор). Смешивание объектов из разных интерпретаторов может привести к сбоям или другому неожиданному поведению.

Особенность реализации CPython: Эту функцию следует использовать для специализированных целей. Не гарантируется, что она существует во всех реализациях Python.

Изменено в версии 3.14: Результат может включать объекты из других интерпретаторов.

sys.getprofile()

Возвращает функцию профилировщика, установленную с помощью setprofile().

sys.gettrace()

Возвращает функцию трассировки, установленную с помощью settrace().

Особенность реализации CPython: Функция gettrace() предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и тому подобного. Её поведение является частью платформы реализации, а не определения языка, и поэтому может быть недоступно во всех реализациях Python.

sys.getwindowsversion()

Возвращает именованный кортеж, описывающий текущую версию Windows. Именованные элементы: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version – 3-кортеж, а все остальные значения – целые числа. Компоненты также можно получать по имени, так что sys.getwindowsversion()[0] эквивалентно sys.getwindowsversion().major. Для совместимости с предыдущими версиями только первые 5 элементов доступны по индексу.

platform будет равно 2 (VER_PLATFORM_WIN32_NT).

product_type может принимать одно из следующих значений:

Константа

Значение

1 (VER_NT_WORKSTATION)

Система является рабочей станцией.

2 (VER_NT_DOMAIN_CONTROLLER)

Система является контроллером домена.

3 (VER_NT_SERVER)

Система является сервером, но не контроллером домена.

Эта функция является обёрткой Win32-функции GetVersionEx(); обратитесь к документации Microsoft по OSVERSIONINFOEX() за дополнительной информацией об этих полях.

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

Примечание

platform_version получает версию из kernel32.dll, которая может отличаться от версии ОС. Пожалуйста, используйте модуль platform для получения точной версии ОС.

Изменено в версии 3.2: Изменён на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.

Изменено в версии 3.6: Добавлен platform_version

sys.get_asyncgen_hooks()

Возвращает объект asyncgen_hooks, который похож на namedtuple вида (firstiter, finalizer), где firstiter и finalizer должны быть либо None, либо функциями, принимающими итератор асинхронного генератора в качестве аргумента, и используются для планирования финализации асинхронного генератора циклом событий.

Добавлено в версии 3.6: См. PEP 525 для подробностей.

Примечание

Эта функция была добавлена на временной основе (см. PEP 411 для подробностей).

sys.get_coroutine_origin_tracking_depth()

Возвращает текущую глубину отслеживания происхождения корутины, установленную set_coroutine_origin_tracking_depth().

Добавлено в версии 3.7.

Примечание

Эта функция была добавлена на временной основе (см. PEP 411 для подробностей). Используйте её только для отладки.

sys.hash_info

Именованный кортеж, содержащий параметры реализации числового хеширования. За дополнительными сведениями о хешировании числовых типов обращайтесь к Хеширование числовых типов.

hash_info.width

Ширина в битах, используемая для хеш-значений

hash_info.modulus

Простой модуль P, используемый в схеме числового хеширования

hash_info.inf

Хеш-значение, возвращаемое для положительной бесконечности

hash_info.nan

(Этот атрибут больше не используется)

hash_info.imag

Множитель, используемый для мнимой части комплексного числа

hash_info.algorithm

Название алгоритма хеширования для str, bytes и memoryview

hash_info.hash_bits

Внутренний размер вывода алгоритма хеширования

hash_info.seed_bits

Размер ключа начального заполнения (seed) алгоритма хеширования

hash_info.cutoff

Порог для оптимизации DJBX33A для коротких строк в диапазоне [1, cutoff).

Добавлено в версии 3.2.

Изменено в версии 3.4: Добавлены algorithm, hash_bits, seed_bits и cutoff.

sys.hexversion

Номер версии, закодированный в виде одного целого числа. Гарантированно увеличивается с каждой версией, включая поддержку непроизводственных релизов. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 1.5.2, используйте:

python
if sys.hexversion >= 0x010502F0:
    # использовать какую-то продвинутую возможность
    ...
else:
    # использовать альтернативную реализацию или предупредить пользователя
    ...

Это называется hexversion, поскольку действительно выглядит осмысленно только при просмотре как результат передачи его встроенной функции hex(). Именованный кортеж sys.version_info можно использовать для более удобочитаемого представления той же информации.

Более подробную информацию о hexversion можно найти в API and ABI Versioning.

sys.implementation

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

name – это идентификатор реализации, например 'cpython'. Фактическая строка определяется реализацией Python, но гарантированно будет в нижнем регистре.

version – это именованный кортеж в том же формате, что и sys.version_info. Он представляет версию реализации Python. Это отличается от конкретной версии языка Python, которой соответствует текущий интерпретатор, и которую представляет sys.version_info. Например, для PyPy 1.8 sys.implementation.version может быть sys.version_info(1, 8, 0, 'final', 0), тогда как sys.version_info будет sys.version_info(2, 7, 2, 'final', 0). Для CPython они совпадают, поскольку это эталонная реализация.

hexversion – это версия реализации в шестнадцатеричном формате, например sys.hexversion.

cache_tag – это тег, используемый механизмом импорта в именах файлов кэшированных модулей. По соглашению, это составное имя из названия и версии реализации, например 'cpython-33'. Однако реализация Python может использовать другое значение, если это уместно. Если cache_tag установлено в None, это означает, что кэширование модулей должно быть отключено.

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

Смотрите также

PEP 684, PEP 734 и concurrent.interpreters.

sys.implementation может содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с символа подчеркивания и не описаны здесь. Независимо от содержимого, sys.implementation не будет изменяться во время работы интерпретатора и между версиями реализации. (Однако он может измениться между версиями языка Python.) См. PEP 421 для получения дополнительной информации.

Добавлено в версии 3.3.

Изменено в версии 3.14: Добавлено поле supports_isolated_interpreters.

Примечание

Добавление новых обязательных атрибутов должно проходить через обычный процесс PEP. См. PEP 421 для получения дополнительной информации.

sys.int_info

Именованный кортеж, содержащий информацию о внутреннем представлении целых чисел в Python. Атрибуты доступны только для чтения.

int_info.bits_per_digit

Количество бит, содержащихся в каждом разряде. Целые числа Python хранятся внутри в системе счисления с основанием 2**int_info.bits_per_digit.

int_info.sizeof_digit

Размер в байтах типа C, используемого для представления разряда.

int_info.default_max_str_digits

Значение по умолчанию для sys.get_int_max_str_digits(), если оно не настроено явно.

int_info.str_digits_check_threshold

Минимальное ненулевое значение для sys.set_int_max_str_digits(), PYTHONINTMAXSTRDIGITS или -X int_max_str_digits.

Добавлено в версии 3.1.

Изменено в версии 3.11: Добавлены default_max_str_digits и str_digits_check_threshold.

sys.__interactivehook__

Когда этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатора в интерактивном режиме. Это происходит после чтения файла PYTHONSTARTUP, чтобы вы могли установить этот хук там. Модуль site устанавливает это.

Вызывает событие аудита cpython.run_interactivehook с объектом хука в качестве аргумента при вызове хука при запуске.

Добавлено в версии 3.4.

sys.intern(string)

Помещает string в таблицу интернированных строк и возвращает интернированную строку – либо саму string, либо её копию. Интернирование строк полезно для небольшого повышения производительности при поиске в словаре: если ключи в словаре интернированы и искомый ключ также интернирован, сравнение ключей (после хеширования) может выполняться сравнением указателей вместо сравнения строк. Обычно имена, используемые в программах Python, автоматически интернируются, а словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.

Интернированные строки не являются бессмертными; вы должны сохранять ссылку на возвращаемое значение intern(), чтобы получить от этого пользу.

sys._is_gil_enabled()

Возвращает True, если GIL включён, и False, если он отключён.

Добавлено в версии 3.13.

Особенность реализации CPython: Не гарантируется наличие во всех реализациях Python.

sys.is_finalizing()

Возвращает True, если основной интерпретатор Python завершает работу. В противном случае возвращает False.

См. также исключение PythonFinalizationError.

Добавлено в версии 3.5.

sys._jit

Утилиты для наблюдения за JIT-компиляцией.

Особенность реализации CPython: JIT-компиляция – это экспериментальная деталь реализации CPython. sys._jit может отсутствовать или вести себя по-разному в разных реализациях Python, версиях или конфигурациях сборки.

Добавлено в версии 3.14.

_jit.is_available()

Возвращает True, если текущий исполняемый файл Python поддерживает JIT-компиляцию, и False в противном случае. Это можно настроить при сборке CPython с помощью параметра --experimental-jit в Windows и параметра --enable-experimental-jit на всех остальных платформах.

_jit.is_enabled()

Возвращает True, если JIT-компиляция включена для текущего процесса Python (подразумевает sys._jit.is_available()), и False в противном случае. Если JIT-компиляция доступна, это можно контролировать, установив переменную окружения PYTHON_JIT в 0 (отключено) или 1 (включено) при запуске интерпретатора.

_jit.is_active()

Возвращает True, если верхний фрейм Python в данный момент выполняет JIT-код (подразумевает sys._jit.is_enabled()), и False в противном случае.

Примечание

Эта функция предназначена для тестирования и отладки самого JIT. Не следует использовать её для других целей.

Примечание

Из-за природы трассирующих JIT-компиляторов повторные вызовы этой функции могут давать неожиданные результаты. Например, ветвление по её возвращаемому значению, скорее всего, приведёт к непредсказуемому поведению (если это вызовет вход или выход из JIT-кода):

python
>>> for warmup in range(BIG_NUMBER):
...     # Эта строка является "горячей" и в конечном итоге компилируется JIT:
...     if sys._jit.is_active():
...         # Эта строка является "холодной" и выполняется в интерпретаторе:
...         assert sys._jit.is_active()
...
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
    assert sys._jit.is_active()
           ~~~~~~~~~~~~~~~~~~^^
AssertionError
sys.last_exc

Эта переменная определена не всегда; она устанавливается в экземпляр исключения, когда исключение не обработано и интерпретатор выводит сообщение об ошибке и трассировку стека. Её предназначение – позволить интерактивному пользователю импортировать модуль отладчика и заняться посмертной отладкой без необходимости повторно выполнять команду, вызвавшую ошибку. (Обычное использование – import pdb; pdb.pm() для входа в посмертный отладчик; см. модуль pdb для получения дополнительной информации.)

Добавлено в версии 3.12.

sys._is_immortal(op)

Возвращает True, если переданный объект является бессмертным, и False в противном случае.

Примечание

Объекты, которые являются бессмертными (и, следовательно, возвращают True при передаче этой функции), не гарантированно останутся бессмертными в будущих версиях, и наоборот для смертных объектов.

Добавлено в версии 3.14.

Особенность реализации CPython: Эта функция должна использоваться только для специализированных целей. Не гарантируется её наличие во всех реализациях Python.

sys._is_interned(string)

Возвращает True, если переданная строка является «интернированной», и False в противном случае.

Добавлено в версии 3.13.

Особенность реализации CPython: Не гарантируется наличие во всех реализациях Python.

sys.last_type
sys.last_value
sys.last_traceback

Эти три переменные устарели; используйте sys.last_exc вместо них. Они содержат устаревшее представление sys.last_exc, возвращаемое из exc_info() выше.

sys.maxsize

Целое число, задающее максимальное значение, которое может принимать переменная типа Py_ssize_t. Обычно это 2**31 - 1 на 32-битной платформе и 2**63 - 1 на 64-битной платформе.

sys.maxunicode

Целое число, задающее значение наибольшей кодовой точки Unicode, т.е. 1114111 (0x10FFFF в шестнадцатеричной записи).

Изменено в версии 3.3: До PEP 393, sys.maxunicode был либо 0xFFFF либо 0x10FFFF, в зависимости от параметра конфигурации, который определял, хранятся ли символы Юникода как UCS-2 или UCS-4.

sys.meta_path

Список объектов искателей метапути, у которых вызываются методы find_spec(), чтобы определить, может ли один из объектов найти импортируемый модуль. По умолчанию он содержит записи, реализующие механизм импорта Python по умолчанию. Метод find_spec() вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то атрибут __path__ родительского пакета передаётся вторым аргументом. Метод возвращает спецификацию модуля или None, если модуль не удаётся найти.

Смотрите также

importlib.abc.MetaPathFinder

Абстрактный базовый класс, определяющий интерфейс объектов-искателей на meta_path.

importlib.machinery.ModuleSpec

Конкретный класс, экземпляры которого должен возвращать find_spec().

Изменено в версии 3.4: Спецификации модулей были введены в Python 3.4, согласно PEP 451.

Изменено в версии 3.12: Убран запасной вариант, который искал метод find_module(), если запись meta_path не имела метода find_spec().

sys.modules

Это словарь, который сопоставляет имена модулей с уже загруженными модулями. Его можно изменять, чтобы принудительно перезагружать модули и выполнять другие трюки. Однако замена словаря не обязательно сработает ожидаемым образом, а удаление важных элементов из словаря может привести к сбою Python. Если вы хотите выполнять итерацию по этому глобальному словарю, всегда используйте sys.modules.copy() или tuple(sys.modules), чтобы избежать исключений, так как его размер может измениться во время итерации из-за побочных эффектов кода или активности в других потоках.

sys.orig_argv

Список исходных аргументов командной строки, переданных исполняемому файлу Python.

Элементы sys.orig_argv – это аргументы интерпретатора Python, а элементы sys.argv – аргументы программы пользователя. Аргументы, потреблённые самим интерпретатором, будут присутствовать в sys.orig_argv и отсутствовать в sys.argv.

Добавлено в версии 3.10.

sys.path

Список строк, задающий путь поиска модулей. Инициализируется из переменной окружения PYTHONPATH, а также из значения по умолчанию, зависящего от установки.

По умолчанию при инициализации при запуске программы потенциально небезопасный путь добавляется в начало sys.path (перед записями, вставленными в результате PYTHONPATH):

  • python -m module командная строка: добавляет текущую рабочую директорию в начало.

  • python script.py командная строка: добавляет директорию сценария в начало. Если это символическая ссылка, разрешает символические ссылки.

  • python -c code и python (REPL) командные строки: добавляют пустую строку, что означает текущую рабочую директорию.

Чтобы не добавлять этот потенциально небезопасный путь в начало, используйте параметр командной строки -P или переменную окружения PYTHONSAFEPATH.

Программа может изменять этот список для своих целей. В sys.path следует добавлять только строки; все остальные типы данных игнорируются при импорте.

Смотрите также

  • Модуль site. В нём описывается, как использовать файлы .pth для расширения sys.path.

sys.path_hooks

Список вызываемых объектов, которые принимают аргумент-путь и пытаются создать искатель для этого пути. Если искатель может быть создан, вызываемый объект должен вернуть его, иначе возбудить ImportError.

Изначально описано в PEP 302.

sys.path_importer_cache

Словарь, который служит кешем для объектов искателей. Ключами являются пути, переданные в sys.path_hooks, а значениями – найденные искатели. Если путь является корректным путём файловой системы, но искатель не найден в sys.path_hooks, то сохраняется None.

Изначально описано в PEP 302.

sys.platform

Строка, содержащая идентификатор платформы. Известные значения:

Система

platform значение

AIX

'aix'

Android

'android'

Emscripten

'emscripten'

FreeBSD

'freebsd'

iOS

'ios'

Linux

'linux'

macOS

'darwin'

Windows

'win32'

Windows/Cygwin

'cygwin'

WASI

'wasi'

В Unix-системах, не перечисленных в таблице, значением является имя ОС в нижнем регистре, возвращаемое uname -s, с добавлением первой части версии, возвращаемой uname -r, например 'sunos5', на момент сборки Python. Если не требуется проверять конкретную версию системы, рекомендуется использовать следующий идиоматический способ:

python
if sys.platform.startswith('sunos'):
    # Код, специфичный для SunOS, здесь...

Изменено в версии 3.3: В Linux sys.platform больше не содержит старшую версию. Теперь это всегда 'linux' вместо 'linux2' или 'linux3'.

Изменено в версии 3.8: На AIX sys.platform больше не содержит старшую версию. Теперь это всегда 'aix' вместо 'aix5' или 'aix7'.

Изменено в версии 3.13: На Android sys.platform теперь возвращает 'android' вместо 'linux'.

Изменено в версии 3.14: На FreeBSD sys.platform больше не содержит старшую версию. Теперь это всегда 'freebsd' вместо 'freebsd13' или 'freebsd14'.

Смотрите также

os.name имеет более грубую гранулярность. os.uname() предоставляет зависимую от системы информацию о версии.

Модуль platform предоставляет подробные проверки идентичности системы.

sys.platlibdir

Имя платформенно-зависимого каталога библиотек. Используется для построения пути к стандартной библиотеке и путей к установленным модулям расширений.

На большинстве платформ равно "lib". На Fedora и SuSE на 64-битных платформах равно "lib64", что даёт следующие пути sys.path (где X.Y – версия Python major.minor):

  • /usr/lib64/pythonX.Y/: Стандартная библиотека (например, os.py модуля os)

  • /usr/lib64/pythonX.Y/lib-dynload/: Модули расширений C стандартной библиотеки (например, модуль errno; точное имя файла зависит от платформы)

  • /usr/lib/pythonX.Y/site-packages/ (всегда следует использовать lib, а не sys.platlibdir): Сторонние модули

  • /usr/lib64/pythonX.Y/site-packages/: Модули расширений C сторонних пакетов

Добавлено в версии 3.9.

sys.prefix

Строка, задающая префикс каталога для конкретного сайта, в который устанавливаются платформенно-независимые файлы Python; в Unix по умолчанию это /usr/local. Это можно установить во время сборки с помощью аргумента --prefix скрипта configure. Производные пути см. в Пути установки.

Примечание

Если действует виртуальное окружение, этот prefix будет указывать на виртуальное окружение. Значение для установки Python по-прежнему будет доступно через base_prefix. Дополнительную информацию см. в Виртуальные окружения.

Changed in version 3.14: When running under a virtual environment, prefix and exec_prefix are now set to the virtual environment prefix by the path initialization, instead of site. This means that prefix and exec_prefix always point to the virtual environment, even when site is disabled (-S).

sys.ps1
sys.ps2

Строки, задающие основное и дополнительное приглашения интерпретатора. Они определены только в том случае, если интерпретатор работает в интерактивном режиме. В этом случае их начальные значения – '>>> ' и '... '. Если любой из этих переменных присвоить нестроковый объект, его str() будет пересчитываться каждый раз, когда интерпретатор готовится прочитать новую интерактивную команду; это можно использовать для реализации динамического приглашения.

sys.setdlopenflags(n)

Устанавливает флаги, используемые интерпретатором для вызовов dlopen(), например, при загрузке модулей расширений. Среди прочего, это позволяет выполнять ленивое разрешение символов при импорте модуля, если вызвать как sys.setdlopenflags(0). Для обеспечения общего доступа к символам между модулями расширений следует вызывать как sys.setdlopenflags(os.RTLD_GLOBAL). Символические имена значений флагов можно найти в модуле os (константы RTLD_xxx, например os.RTLD_LAZY).

sys.set_int_max_str_digits(maxdigits)

Устанавливает ограничение длины преобразования целых чисел в строки, используемое этим интерпретатором. См. также get_int_max_str_digits().

Добавлено в версии 3.11.

sys.set_lazy_imports(mode)

Устанавливает глобальный режим ленивых импортов. Параметр mode должен быть одной из следующих строк:

  • "normal": Только импорты, явно помеченные ключевым словом lazy, являются ленивыми

  • "all": Все импорты верхнего уровня становятся потенциально ленивыми

  • "none": Все ленивые импорты подавляются (даже явно помеченные)

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

В дополнение к режиму, ленивыми импортами можно управлять через фильтр, предоставляемый set_lazy_imports_filter().

См. также get_lazy_imports() и PEP 810.

Добавлено в версии 3.15.

sys.set_lazy_imports_filter(filter)

Устанавливает колбэк фильтра ленивых импортов. Параметр filter должен быть вызываемым объектом или None для очистки фильтра.

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

python
def filter(importing_module: str, imported_module: str,
           fromlist: tuple[str, ...] | None) -> bool

Где:

  • importing_module – имя модуля, выполняющего импорт

  • imported_module – разрешённое имя импортируемого модуля (например, lazy from .spam import eggs передаёт package.spam)

  • fromlist – кортеж имён, импортируемых (для операторов from ... import), или None для обычных импортов

Фильтр должен возвращать True, чтобы разрешить ленивый импорт, или False, чтобы принудительно выполнить обычный импорт.

Это расширенная возможность, предназначенная для специализированных пользователей, которым нужен точный контроль над поведением ленивых импортов.

См. также get_lazy_imports_filter() и PEP 810.

Добавлено в версии 3.15.

sys.setprofile(profilefunc)

Устанавливает профилирующую функцию системы, которая позволяет реализовать профилировщик исходного кода Python на самом Python. См. главу profile – профилировщик на чистом Python для получения дополнительной информации о профилировщике Python. Системная профилирующая функция вызывается аналогично системной трассирующей функции (см. settrace()), но вызывается с другими событиями; например, она не вызывается для каждой выполненной строки кода (только при вызове и возврате, но событие возврата сообщается даже при наличии установленного исключения). Функция привязана к потоку, но у профилировщика нет способа узнать о переключениях контекста между потоками, поэтому не имеет смысла использовать её при наличии нескольких потоков. Кроме того, её возвращаемое значение не используется, поэтому она может просто возвращать None. Ошибка в профилирующей функции приведёт к её отключению.

Примечание

Тот же механизм трассировки используется для setprofile(), что и для settrace(). Чтобы отслеживать вызовы с setprofile() внутри трассирующей функции (например, в точке останова отладчика), см. call_tracing().

Функции профилирования должны иметь три аргумента: frame, event и arg. frame – это текущий стековый фрейм. event – это строка: 'call', 'return', 'c_call', 'c_return' или 'c_exception'. arg зависит от типа события.

События имеют следующее значение:

'call'

Вызывается функция (или вход в другой блок кода). Вызывается профилирующая функция; arg равно None.

'return'

Функция (или другой блок кода) собирается вернуть управление. Вызывается профилирующая функция; arg – это значение, которое будет возвращено, или None, если событие вызвано возбуждением исключения.

'c_call'

Функция C собирается быть вызванной. Это может быть функция расширения или встроенная функция. arg – это объект функции C.

'c_return'

Функция C вернула управление. arg – это объект функции C.

'c_exception'

Функция C возбудила исключение. arg – это объект функции C.

Вызывает событие аудита sys.setprofile без аргументов.

sys.setrecursionlimit(limit)

Устанавливает максимальную глубину стека интерпретатора Python в limit. Этот предел предотвращает бесконечную рекурсию, которая может вызвать переполнение стека C и аварийное завершение Python.

Максимально возможный предел зависит от платформы. Пользователю может потребоваться установить более высокий предел, если у него есть программа, требующая глубокой рекурсии, и платформа, поддерживающая более высокий предел. Это следует делать с осторожностью, поскольку слишком высокий предел может привести к аварийному завершению.

Если новое ограничение слишком мало для текущей глубины рекурсии, возбуждается исключение RecursionError.

Изменено в версии 3.5.1: Теперь возбуждается исключение RecursionError, если новое ограничение слишком мало для текущей глубины рекурсии.

sys.setswitchinterval(interval)

Устанавливает интервал переключения потоков интерпретатора (в секундах). Это значение с плавающей точкой определяет идеальную длительность «квантов времени», выделяемых параллельно работающим потокам Python. Обратите внимание, что фактическое значение может быть больше, особенно если используются длительные внутренние функции или методы. Кроме того, какой поток будет запланирован по истечении интервала, решает операционная система. У интерпретатора нет собственного планировщика.

Добавлено в версии 3.2.

sys.settrace(tracefunc)

Устанавливает системную трассировочную функцию, которая позволяет реализовать отладчик исходного кода Python на Python. Функция привязана к потоку; чтобы отладчик поддерживал несколько потоков, он должен зарегистрировать трассировочную функцию с помощью settrace() для каждого отлаживаемого потока или использовать threading.settrace().

Трассировочные функции должны иметь три аргумента: frame, event и arg. frame – это текущий стековый фрейм. event – строка: 'call', 'line', 'return', 'exception' или 'opcode'. arg зависит от типа события.

Трассировочная функция вызывается (с event, установленным в 'call') при входе в новую локальную область видимости; она должна возвращать ссылку на локальную трассировочную функцию для использования в новой области или None, если область не должна трассироваться.

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

Если в трассировочной функции произошла любая ошибка, она будет сброшена, как если бы была вызвана settrace(None).

Примечание

Трассировка отключается во время вызова трассировочной функции (например, функции, установленной settrace()). О рекурсивной трассировке см. call_tracing().

События имеют следующее значение:

'call'

Функция вызывается (или вход в другой блок кода). Вызывается глобальная трассировочная функция; arg равно None; возвращаемое значение задаёт локальную трассировочную функцию.

'line'

Интерпретатор собирается выполнить новую строку кода или повторно выполнить условие цикла. Вызывается локальная трассировочная функция; arg равно None; возвращаемое значение задаёт новую локальную трассировочную функцию. Подробное описание работы см. в Objects/lnotab_notes.txt. Построчные события могут быть отключены для фрейма установкой f_trace_lines в False на этом фрейме.

'return'

Функция (или другой блок кода) собирается вернуть значение. Вызывается локальная трассировочная функция; arg – это значение, которое будет возвращено, или None, если событие вызвано возбуждением исключения. Возвращаемое значение трассировочной функции игнорируется.

'exception'

Произошло исключение. Вызывается локальная трассировочная функция; arg – это кортеж (exception, value, traceback); возвращаемое значение задаёт новую локальную трассировочную функцию.

'opcode'

Интерпретатор собирается выполнить новый опкод (подробнее об опкодах см. dis). Вызывается локальная трассировочная функция; arg равно None; возвращаемое значение задаёт новую локальную трассировочную функцию. События на опкод по умолчанию не генерируются: они должны быть явно запрошены установкой f_trace_opcodes в True на фрейме.

Обратите внимание: при распространении исключения вниз по цепочке вызывающих на каждом уровне генерируется событие 'exception'.

Для более тонкого использования можно установить трассировочную функцию прямым присваиванием frame.f_trace = tracefunc, а не полагаться на её установку косвенно через возвращаемое значение уже установленной трассировочной функции. Это также необходимо для активации трассировочной функции на текущем фрейме, чего settrace() не делает. Обратите внимание, что для работы этого механизма должна быть установлена глобальная трассировочная функция с помощью settrace(), чтобы включить механизм трассировки времени выполнения, но это не обязательно должна быть та же самая функция (например, это может быть малозатратная трассировочная функция, которая просто возвращает None, чтобы немедленно отключить себя на каждом фрейме).

Дополнительную информацию об объектах кода и фреймов см. в Стандартной иерархии типов.

Вызывает событие аудита sys.settrace без аргументов.

Особенность реализации CPython: Функция settrace() предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия кода и тому подобного. Её поведение является частью реализации платформы, а не частью определения языка, и поэтому может быть недоступно во всех реализациях Python.

Изменено в версии 3.7: Добавлен тип события 'opcode'; добавлены атрибуты f_trace_lines и f_trace_opcodes для фреймов

sys.set_asyncgen_hooks([firstiter] [, finalizer])

Принимает два необязательных именованных аргумента, которые являются вызываемыми объектами, принимающими итератор асинхронного генератора в качестве аргумента. Вызываемый объект firstiter будет вызван при первой итерации асинхронного генератора. Вызываемый объект finalizer будет вызван, когда асинхронный генератор будет готов к сборке мусора.

Вызывает событие аудита sys.set_asyncgen_hooks_firstiter без аргументов.

Вызывает событие аудита sys.set_asyncgen_hooks_finalizer без аргументов.

Возбуждаются два аудиторских события, поскольку базовый API состоит из двух вызовов, каждый из которых должен возбуждать собственное событие.

Добавлено в версии 3.6: Подробнее см. в PEP 525; пример реализации метода finalizer см. в реализации asyncio.Loop.shutdown_asyncgens в Lib/asyncio/base_events.py

Примечание

Эта функция была добавлена на временной основе (подробнее см. PEP 411).

sys.set_coroutine_origin_tracking_depth(depth)

Позволяет включить или отключить отслеживание происхождения корутины. При включении атрибут cr_origin объектов корутины будет содержать кортеж кортежей (имя файла, номер строки, имя функции), описывающий трассировку стека, где был создан объект корутины, начиная с самого последнего вызова. При отключении cr_origin будет равен None.

Чтобы включить, передайте значение depth больше нуля; это задаёт количество фреймов, информация о которых будет захвачена. Чтобы отключить, установите depth в ноль.

Этот параметр привязан к потоку.

Добавлено в версии 3.7.

Примечание

Эта функция была добавлена на временной основе (подробнее см. PEP 411). Используйте её только для целей отладки.

sys.activate_stack_trampoline(backend, /)

Активирует трамплин профилировщика стека backend. Единственный поддерживаемый backend – "perf".

Трамплины стека нельзя активировать, если активен JIT.

Добавлено в версии 3.12.

sys.deactivate_stack_trampoline()

Деактивирует текущий backend трамплина профилировщика стека.

Если ни один профилировщик стека не активирован, эта функция не имеет эффекта.

Добавлено в версии 3.12.

sys.is_stack_trampoline_active()

Возвращает True, если активен трамплин профилировщика стека.

Добавлено в версии 3.12.

sys.remote_exec(pid, script)

Выполняет script – файл, содержащий код Python, в удалённом процессе с заданным pid.

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

Удалённый процесс должен выполнять интерпретатор CPython той же основной и минорной версии, что и локальный процесс. Если локальный или удалённый интерпретатор является предварительным выпуском (альфа, бета или кандидат на выпуск), то локальный и удалённый интерпретаторы должны совпадать до версии в точности.

См. протокол подключения удалённой отладки для получения дополнительной информации о механизме удалённой отладки.

Когда код выполняется в удалённом процессе, возникает событие аудита sys.remote_exec с pid и путём к файлу сценария. Это событие возникает в процессе, который вызвал sys.remote_exec().

Когда сценарий выполняется в удалённом процессе, возникает событие аудита cpython.remote_debugger_script с путём в удалённом процессе. Это событие возникает в удалённом процессе, а не в том, который вызвал sys.remote_exec().

Доступность: Unix, Windows.

Добавлено в версии 3.14: См. PEP 768 для подробностей.

sys._enablelegacywindowsfsencoding()

Изменяет кодировку файловой системы и обработчик ошибок на 'mbcs' и 'replace' соответственно, для совместимости с версиями Python до 3.6.

Это эквивалентно определению PYTHONLEGACYWINDOWSFSENCODING переменной окружения перед запуском Python.

См. также sys.getfilesystemencoding() и sys.getfilesystemencodeerrors().

Примечание

Изменение кодировки файловой системы после запуска Python рискованно, поскольку старая кодировка или пути, закодированные старой кодировкой, могут быть где-то закешированы. Используйте PYTHONLEGACYWINDOWSFSENCODING вместо этого.

Добавлено в версии 3.6: См. PEP 529 для подробностей.

Устарело с версии 3.13, будет удалено в версии 3.16: Используйте PYTHONLEGACYWINDOWSFSENCODING вместо этого.

sys.stdin
sys.stdout
sys.stderr

Файловые объекты, используемые интерпретатором для стандартного ввода, вывода и ошибок:

  • stdin используется для всего интерактивного ввода (включая вызовы input());

  • stdout используется для вывода print() и выражений, а также для приглашений input();

  • Собственные приглашения интерпретатора и сообщения об ошибках направляются в stderr.

Эти потоки данных – обычные текстовые файлы, подобные тем, что возвращаются функцией open(). Их параметры выбираются следующим образом:

  • Кодировка и обработка ошибок инициализируются из PyConfig.stdio_encoding и PyConfig.stdio_errors.

    В Windows для консольного устройства используется UTF-8. Несимвольные устройства, такие как дисковые файлы и каналы, используют системную кодировку локали (т.е. кодовую страницу ANSI). Неконсольные символьные устройства, такие как NUL (т.е. если isatty() возвращает True), используют значение кодовых страниц ввода и вывода консоли при запуске соответственно для stdin и stdout/stderr. По умолчанию это системная кодировка локали, если процесс изначально не прикреплён к консоли.

    Особое поведение консоли можно переопределить, установив переменную окружения PYTHONLEGACYWINDOWSSTDIO перед запуском Python. В этом случае кодовые страницы консоли используются так же, как для любого другого символьного устройства.

    На всех платформах кодировку символов можно переопределить, установив переменную окружения PYTHONIOENCODING перед запуском Python или через новую опцию командной строки -X utf8 и переменную окружения PYTHONUTF8. Однако для консоли Windows это применимо только в случае, если также установлена PYTHONLEGACYWINDOWSSTDIO.

  • В интерактивном режиме поток stdout буферизируется по строкам. В противном случае он буферизируется блоками, как обычные текстовые файлы. Поток stderr буферизируется по строкам в обоих случаях. Оба потока можно сделать небуферизированными, передав опцию командной строки -u или установив переменную окружения PYTHONUNBUFFERED.

Изменено в версии 3.9: Неинтерактивный stderr теперь буферизируется по строкам вместо полной буферизации.

Примечание

Для записи или чтения двоичных данных из/в стандартные потоки используйте нижележащий двоичный объект buffer. Например, чтобы записать байты в stdout, используйте sys.stdout.buffer.write(b'abc').

Однако, если вы пишете библиотеку (и не контролируете, в каком контексте будет выполняться её код), имейте в виду, что стандартные потоки могут быть заменены файлоподобными объектами, например io.StringIO, которые не поддерживают атрибут buffer.

sys.__stdin__
sys.__stdout__
sys.__stderr__

Эти объекты содержат исходные значения stdin, stderr и stdout на момент запуска программы. Они используются во время финализации и могут быть полезны для вывода в фактический стандартный поток независимо от того, был ли перенаправлен объект sys.std*.

Его также можно использовать для восстановления фактических файлов до известных рабочих файловых объектов в случае, если они были перезаписаны некорректным объектом. Однако предпочтительный способ – явно сохранить предыдущий поток перед заменой и восстановить сохранённый объект.

Примечание

При некоторых условиях stdin, stdout и stderr, а также исходные значения __stdin__, __stdout__ и __stderr__ могут быть None. Обычно это характерно для приложений Windows GUI, не подключённых к консоли, и приложений Python, запущенных с pythonw.

sys.stdlib_module_names

Неизменяемое множество строк, содержащее имена модулей стандартной библиотеки.

Оно одинаково на всех платформах. Также перечислены модули, недоступные на некоторых платформах, и модули, отключённые при сборке Python. Перечислены все типы модулей: чистые Python, встроенные, замороженные и модули расширений. Тестовые модули исключены.

Для пакетов указан только основной пакет: подпакеты и подмодули не перечисляются. Например, указан пакет email, но подпакет email.mime и подмодуль email.message не указаны.

См. также список sys.builtin_module_names.

Добавлено в версии 3.10.

sys.thread_info

Именованный кортеж, содержащий информацию о реализации потоков.

thread_info.name

Имя реализации потоков:

  • "nt": потоки Windows

  • "pthread": потоки POSIX

  • "pthread-stubs": заглушка потоков POSIX (на платформах WebAssembly без поддержки многопоточности)

  • "solaris": потоки Solaris

thread_info.lock

Имя реализации блокировки:

  • "semaphore": блокировка использует семафор

  • "mutex+cond": блокировка использует мьютекс и условную переменную

  • None если эта информация неизвестна

thread_info.version

Имя и версия библиотеки потоков. Это строка или None, если эта информация неизвестна.

Добавлено в версии 3.3.

sys.tracebacklimit

Когда этой переменной присвоено целое значение, она определяет максимальное количество уровней информации трассировки, выводимой при необработанном исключении. Значение по умолчанию: 1000. Если установлено 0 или меньше, вся информация трассировки подавляется и выводятся только тип и значение исключения.

sys.unraisablehook(unraisable, /)

Обрабатывает неподдающееся обработке исключение.

Вызывается, когда произошло исключение, но у Python нет возможности его обработать. Например, когда деструктор вызывает исключение или во время сборки мусора (gc.collect()).

Аргумент unraisable имеет следующие атрибуты:

  • exc_type: Тип исключения.

  • exc_value: Значение исключения, может быть None.

  • exc_traceback: Трассировка исключения, может быть None.

  • err_msg: Сообщение об ошибке, может быть None.

  • object: Объект, вызвавший исключение, может быть None.

Перехватчик по умолчанию форматирует err_msg и object как: f'{err_msg}: {object!r}'; использует сообщение об ошибке «Исключение проигнорировано в», если err_msg равно None. Как и модуль traceback, он по умолчанию добавляет цвет в вывод исключений. Это можно отключить с помощью переменных окружения.

sys.unraisablehook() можно переопределить, чтобы управлять обработкой неподдающихся обработке исключений.

Изменено в версии 3.15: Исключения теперь выводятся цветным текстом.

Смотрите также

excepthook(), который обрабатывает неперехваченные исключения.

Предупреждение

Хранение exc_value с помощью пользовательского перехватчика может создать циклическую ссылку. Её следует явно очищать для разрыва цикла, когда исключение больше не нужно.

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

Возбуждает событие аудита sys.unraisablehook с аргументами hook, unraisable, когда происходит исключение, которое невозможно обработать. Объект unraisable совпадает с тем, что будет передан перехватчику. Если перехватчик не установлен, hook может быть None.

Добавлено в версии 3.8.

sys.version

Строка, содержащая номер версии интерпретатора Python, а также дополнительную информацию о номере сборки и используемом компиляторе. Эта строка выводится при запуске интерактивного интерпретатора. Не извлекайте из неё информацию о версии, вместо этого используйте version_info и функции, предоставляемые модулем platform.

sys.api_version

Версия C API, эквивалентная макросу C PYTHON_API_VERSION. Определена для обратной совместимости.

В настоящее время эта константа не обновляется в новых версиях Python и не пригодна для определения версии. В будущем это может измениться.

sys.version_info

Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска – 'alpha', 'beta', 'candidate' или 'final'. Значение version_info, соответствующее версии Python 2.0, равно (2, 0, 0, 'final', 0). К компонентам также можно обращаться по имени: так sys.version_info[0] эквивалентно sys.version_info.major и так далее.

Изменено в версии 3.1: Добавлены именованные атрибуты компонентов.

sys.warnoptions

Это деталь реализации механизма предупреждений; не изменяйте это значение. Обратитесь к модулю warnings за дополнительной информацией о механизме предупреждений.

sys.winver

Номер версии, используемый для формирования ключей реестра на платформах Windows. Он хранится как строковый ресурс 1000 в DLL Python. Значение обычно равно мажорной и минорной версиям работающего интерпретатора Python. Это значение присутствует в модуле sys для справки; его изменение не влияет на ключи реестра, используемые Python.

sys.monitoring

Пространство имён, содержащее функции и константы для регистрации колбэков и управления событиями мониторинга. Подробнее см. sys.monitoring.

sys._xoptions

Словарь различных флагов, специфичных для реализации, передаваемых через опцию командной строки -X. Имена опций либо сопоставляются со своими значениями, если они заданы явно, либо с True. Пример:

shell-session
$ ./python -Xa=b -Xc
Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys._xoptions
{'a': 'b', 'c': True}

Деталь реализации CPython: Это специфический для CPython способ доступа к опциям, переданным через -X. Другие реализации могут предоставлять их другими способами или не предоставлять вовсе.

Добавлено в версии 3.2.

Цитаты

[C99]

ISO/IEC 9899:1999. «Programming languages – C.» Общедоступный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.