Spec-Zone.ru › Python 3.10

sys — Параметры и функции, специфичные для системы

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

sys.abiflags

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

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

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

sys.addaudithook(hook)

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

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

Обратите внимание, что аудиторные хуки предназначены в первую очередь для сбора информации об внутренних или иным образом не наблюдаемых действиях, как Python, так и библиотек, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может тривиально отключить или обойти хуки, добавленные с помощью этой функции. Как минимум, все хуки, связанные с безопасностью, должны быть добавлены с использованием API C 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

Устанавливается во время запуска Python, до выполнения site.py, равным значению exec_prefix. Если выполнение не происходит в виртуальной среде, значения остаются неизменными; если site.py обнаруживает использование виртуальной среды, значения prefix и exec_prefix будут изменены для указания на виртуальную среду, в то время как base_prefix и base_exec_prefix останутся указателями на базовую установку Python (из которой была создана виртуальная среда).

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

sys.base_prefix

Устанавливается во время запуска Python, до выполнения site.py, равным значению prefix. Если выполнение не происходит в виртуальной среде, значения остаются неизменными; если site.py обнаруживает использование виртуальной среды, значения prefix и exec_prefix будут изменены для указания на виртуальную среду, в то время как base_prefix и base_exec_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), в то время как отслеживание включено. Состояние отслеживания сохраняется и восстанавливается после этого. Это предназначено для вызова отладчиком из контрольной точки для рекурсивной отладки другого кода.

sys.copyright

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

sys._clear_type_cache()

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

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

sys._current_frames()

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

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

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

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

sys._current_exceptions()

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

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

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

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

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.

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

sys.displayhook(value)

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

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

Псевдокод:

def displayhook(value):
    if value is None:
        return
    # Set '_' to None to avoid recursion
    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

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

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)

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

Когда возникает исключение и не обрабатывается, интерпретатор вызывает sys.excepthook с тремя аргументами: классом исключения, экземпляром исключения и объектом трассировки. В интерактивной сессии это происходит перед возвратом управления в приглашение; в программе 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__

END_OF_DOCUMENT_MARKER
sys.exc_info()

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

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

Если ни одно исключение не обрабатывается ни в одной области стека, возвращается кортеж, содержащий три None значения. В противном случае возвращаемые значения (type, value, traceback). Их значение таково: type получает тип обрабатываемого исключения (подкласс BaseException); value получает экземпляр исключения (экземпляр типа исключения); traceback получает объект обработки исключений, который содержит стек вызовов в тот момент, когда произошло исключение.

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.

Примечание

Если виртуальная среда виртуальная среда активна, это значение будет изменено в site.py, чтобы указывать на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_exec_prefix.

sys.executable

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

sys.exit([arg])

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

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

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

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

sys.flags

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

атрибут

флаг

debug

-d

inspect

-i

interactive

-i

isolated

-I

optimize

-O или -OO

dont_write_bytecode

-B

no_user_site

-s

no_site

-S

ignore_environment

-E

verbose

-v

bytes_warning

-b

quiet

-q

hash_randomization

-R

dev_mode

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

utf8_mode

-X utf8

int_max_str_digits

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

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

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

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

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

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

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

END_OF_DOCUMENT_MARKER
sys.float_info

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

атрибут

макрос float.h

объяснение

epsilon

DBL_EPSILON

разница между 1.0 и наименьшим значением, большим 1.0, которое может быть представлено как float

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

dig

DBL_DIG

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

mant_dig

DBL_MANT_DIG

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

max

DBL_MAX

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

max_exp

DBL_MAX_EXP

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

max_10_exp

DBL_MAX_10_EXP

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

min

DBL_MIN

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

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

min_exp

DBL_MIN_EXP

минимальное целое число e, такое что radix**(e-1) — нормализованное float

min_10_exp

DBL_MIN_10_EXP

минимальное целое число e, такое что 10**e — нормализованное float

radix

FLT_RADIX

основание представления показателя

rounds

FLT_ROUNDS

целое число, представляющее режим округления для арифметики с плавающей запятой. Это отражает значение системы FLT_ROUNDS макроса во время запуска интерпретатора: -1 неопределённое, 0 к нулю, 1 к ближайшему, 2 к положительной бесконечности, 3 к отрицательной бесконечности

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

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

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # decimal string with 15 significant digits
>>> format(float(s), '.15g')  # convert to float and back -> same value
'3.14159265358979'

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

>>> s = '9876543211234567'    # 16 significant digits is too many!
>>> format(float(s), '.16g')  # conversion changes value
'9876543211234568'
sys.float_repr_style

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

Новое в версии 3.1.

sys.getallocatedblocks()

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

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

Новое в версии 3.4.

sys.getandroidapilevel()

Возвращает версию API Android, установленную на момент сборки, как целое число.

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

Новое в версии 3.7.

sys.getdefaultencoding()

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

sys.getdlopenflags()

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

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

sys.getfilesystemencoding()

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

Для наилучшей совместимости в качестве имён файлов следует использовать str во всех случаях, хотя представление имён файлов в виде байтов также поддерживается. Функции, принимающие или возвращающие имена файлов, должны поддерживать как 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.

sys.getfilesystemencodeerrors()

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

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

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

Введено в версии 3.6.

sys.get_int_max_str_digits()

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

Введено в версии 3.10.7.

sys.getrefcount(object)

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

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

sys.getrecursionlimit()

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

sys.getsizeof(object[, default])

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

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

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

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

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

sys.getswitchinterval()

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

Введено в версии 3.2.

sys._getframe([depth])

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

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

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

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.

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

Изменено в версии 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 для получения подробностей). Используйте ее только для целей отладки.

END_OF_DOCUMENT_MARKER ```
sys.hash_info

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

атрибут

объяснение

width

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

modulus

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

inf

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

nan

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

imag

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

algorithm

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

hash_bits

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

seed_bits

размер ключевого значения для начального состояния алгоритма хеширования

Введено в версии 3.2.

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

sys.hexversion

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

if sys.hexversion >= 0x010502F0:
    # use some advanced feature
    ...
else:
    # use an alternative implementation or warn the user
    ...

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

Дополнительные сведения о hexversion можно найти в API и ABI версии.

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, это указывает на то, что кэширование модулей должно быть отключено.

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

Введено в версии 3.3.

Примечание

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

sys.int_info

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

Атрибут

Описание

bits_per_digit

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

sizeof_digit

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

default_max_str_digits

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

str_digits_check_threshold

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

Введено в версии 3.1.

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

sys.__interactivehook__

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

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

Введено в версии 3.4.

sys.intern(string)

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

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

sys.is_finalizing()

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

Введено в версии 3.5.

sys.last_type
sys.last_value
sys.last_traceback

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

Значение переменных совпадает со значениями возвращаемых значений из exc_info() выше.

sys.maxsize

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

END_OF_DOCUMENT_MARKER ```
sys.maxunicode

Целое число, задающее значение наибольшего кода Юникода, т.е. 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. В более ранних версиях Python искался метод с именем find_module(). Он всё ещё вызывается как резервный вариант, если у записи в meta_path отсутствует метод find_spec().

sys.modules

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

sys.orig_argv

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

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

Введено в версии 3.10.

sys.path

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

При инициализации при запуске программы первым элементом этого списка, path[0], является каталог, содержащий скрипт, который использовался для вызова интерпретатора Python. Если каталог скрипта недоступен (например, если интерпретатор вызывается интерактивно или если скрипт читается из стандартного ввода), path[0] — это пустая строка, которая заставляет Python сначала искать модули в текущем каталоге. Обратите внимание, что каталог скрипта вставляется перед записями, добавленными в результате PYTHONPATH.

Программа свободна изменять этот список по своему усмотрению. В 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.

Изменено в версии 3.3: None сохраняется вместо imp.NullImporter при отсутствии нахождения.

sys.platform

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

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

if sys.platform.startswith('freebsd'):
    # FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
    # Linux-specific code here...
elif sys.platform.startswith('aix'):
    # AIX-specific code here...

Для других систем значения следующие:

Система

Значение platform

AIX

'aix'

Linux

'linux'

Windows

'win32'

Windows/Cygwin

'cygwin'

macOS

'darwin'

Изменено в версии 3.3: В Linux, sys.platform больше не содержит номер основной версии. Он всегда равен 'linux', вместо 'linux2' или 'linux3'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать фрагмент кода startswith, представленный выше.

Изменено в версии 3.8: В AIX, sys.platform больше не содержит номер основной версии. Он всегда равен 'aix', вместо 'aix5' или 'aix7'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать фрагмент кода startswith, представленный выше.

См. также

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

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

sys.platlibdir

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

На большинстве платформ он равен "lib". На Fedora и SuSE он равен "lib64" на 64-битных платформах, что даёт следующие 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. См. Пути установки для производных путей.

Примечание

Если активна виртуальная среда, то это значение в site.py будет изменено для указания на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_prefix.

sys.ps1
sys.ps2

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

sys.setdlopenflags(n)

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

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

sys.set_int_max_str_digits(maxdigits)

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

Введено в версии 3.10.7.

sys.setprofile(profilefunc)

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

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

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

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

'call'

Функция вызывается (или введён какой-либо другой блок кода). Функция профилирования вызывается; arg — None.

'return'

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

'c_call'

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

'c_return'

Функция C вернулась. arg — объект функции C.

'c_exception'

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

sys.setrecursionlimit(limit)

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

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

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

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

sys.setswitchinterval(interval)

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

Введено в версии 3.2.

END_OF_DOCUMENT_MARKER
sys.settrace(tracefunc)

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

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

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

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

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

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

'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._enablelegacywindowsfsencoding()

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

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

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

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

Введено в версии 3.6: Более подробную информацию см. в PEP 529.

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

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

Атрибут

Описание

name

Название реализации потоков:

  • 'nt': Потоки Windows
  • 'pthread': Потоки POSIX
  • 'solaris': Потоки Solaris

lock

Название реализации блокировки:

  • 'semaphore': Блокировка использует семафор
  • 'mutex+cond': Блокировка использует мьютекс и переменную условия
  • None если эта информация неизвестна

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.

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

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

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

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

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

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

sys.version

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

sys.api_version

Версия C API для данного интерпретатора. Разработчикам может быть полезно это при отладке конфликтов версий между 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.

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

sys._xoptions

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

$ ./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. «Языки программирования — C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/sys.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API