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


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

sys.abiflags

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

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

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

sys.addaudithook(hook)

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

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

Вызов 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.

Примечание

В 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.call_tracing(func, args)

Вызов func(*args), в то время как трассировка включена. После этого состояние трассировки сохраняется и восстанавливается. Он предназначен для вызова из отладчика с контрольной точки для рекурсивной отладки некоторых других кодов.

sys.copyright

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

sys._clear_type_cache()

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

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

sys._current_frames()

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

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

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

Raises an auditing event sys._current_frames with no arguments.

sys.breakpointhook()

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

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

Реализация по умолчанию сначала обращается к переменной среды PYTHONBREAKPOINT. Если установлено значение "0", то эта функция возвращает немедленно; то есть это no-op. Если переменная среды не задана или имеет пустое строка, вызывается 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 настроен –with-pydebug, он также выполняет некоторые дорогостоящие внутренние проверки непротиворечивости.

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

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

sys.dllhandle

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

Availability: Windows.

sys.displayhook(value)

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

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

Псевдо-код:

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.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__

sys.exc_info()

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

Если никакие исключения не обрабатываются где-либо в стеке, возвращенный кортеж, содержащий три 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])

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

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

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

Изменено в версии 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
utf8_mode -X utf8

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

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

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

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

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

sys.float_info

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

атрибут float.h макрос объяснение
epsilon DBL_EPSILON разница между 1.0 и наименьшим значением больше 1.0, который представляется в виде числа с float
dig DBL_DIG максимальное количество десятичных цифр, которые могут быть точно представлены в float; см. ниже
mant_dig DBL_MANT_DIG точность float: число базовых цифр radix в значении и значении с плавающей точкой
max DBL_MAX максимальная представляемая положительная конечная float
max_exp DBL_MAX_EXP максимальное целое число e так что radix**(e-1) является представимым конечным float
max_10_exp DBL_MAX_10_EXP максимальное целое число e так что 10**e находится в диапазоне представимых конечных плавающих чисел
min DBL_MIN минимальный представляемый положительный normalized 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 макроса во время запуска интерпретатора. См. раздел 5.2.4.2.2 стандарта C99 для объяснения возможных значений и их смыслов.

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

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

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

>>> s = '9876543211234567'    # 16 16 значащих цифр - это слишком много!
>>> format(float(s), '.16g')  # конверсия меняет значение
'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 как целое число.

Availability: Android.

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

sys.getcheckinterval()

Возвращает «контрольный интервал» интерпретатор; см. setcheckinterval().

Не рекомендуется, начиная с версии 3.2: Вместо этого используйте getswitchinterval().

sys.getdefaultencoding()

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

sys.getdlopenflags()

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

Availability: Unix.

sys.getfilesystemencoding()

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

Эта кодировка всегда совместима с ASCII.

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

  • В режиме UTF-8 кодировка utf-8 на любой платформе.
  • На macOS кодировка является 'utf-8'.
  • В Unix кодировка является кодировка локали.
  • В Windows кодировка может быть 'utf-8' или 'mbcs' в зависимости от конфигурации пользователя.
  • На Android кодировка 'utf-8'.
  • В VxWorks кодировка 'utf-8'.

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

Изменено в версии 3.6: Windows больше не гарантирует возвращает 'mbcs'. Дополнительные сведения см. в разделах PEP 529 и _enablelegacywindowsfsencoding().

Изменено в версии 3.7: Возвращает «utf-8» в режиме UTF-8.

sys.getfilesystemencodeerrors()

Возвращает имя используемый режима ошибок для преобразования имен файлов в юникоде и имен файлов в байтах. Имя кодировка возвращенный от getfilesystemencoding().

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

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

sys.getrefcount(object)

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

sys.getrecursionlimit()

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

sys.getsizeof(object[, default])

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

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

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

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

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

sys.getswitchinterval()

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

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

sys._getframe([depth])

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

Raises an auditing event sys._getframe with no arguments.

Детали реализации 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(); дополнительные сведения об этих полях см. в документации майкрософт по OSVERSIONINFOEX().

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

Availability: 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). Использовать его только для отладки.

sys.hash_info

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

атрибут объяснение
width ширина в битах, используемый для хеш- значений
modulus простой модуль P, используемый для числовой хэш-схемы
inf значение хеша возвращается для положительной бесконечности
nan хэш-значение возвращаемое для nan
imag множитель используемый для мнимой части комплексного числа
algorithm имя алгоритма хеширования str, байта и memoryview
hash_bits внутренний выходной размер хэш-алгоритма
seed_bits размер начального ключа алгоритма хеширования

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

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

sys.hexversion

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

if sys.hexversion >= 0x010502F0:
    # используйте некоторые расширенные функции
    ...
else:
    # используйте альтернативную реализацию или предупредите пользователя
    ...

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

Подробнее с hexversion можно ознакомиться на сайте Версионирование API и ABI.

sys.implementation

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

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

version - именованный кортеж, в том же формате, что и sys.version_info. Представляет собой версию Python implementation. Это значение отличается от конкретного варианта Python language, которому соответствует текущий выполняемый интерпретатор, который представляет 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, используемый для представления цифры

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

sys.__interactivehook__

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

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

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

sys.intern(string)

Ввести string в таблицу «интернированный» строки и возвращает интернированный строка, который является 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-разрядной платформе.

sys.maxunicode

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

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

sys.meta_path

Список объектов поисковик мета-пути, для которых вызваны методы find_spec(), чтобы узнать, может ли один из объектов найти импортируемый модуль. Метод 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.path

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

Как было инициализировано при запуске программы, первым элементом этого списка, path[0], является каталог, содержащий сценарий, который был используемый для вызова Python интерпретатор. Если каталог сценариев недоступен (например, если интерпретатор вызывается в интерактивном режиме или сценарий считывается со стандартного ввода), path[0] является пустым строка, который сначала направляет Python на поиск модулей в текущем каталоге. Обратите внимание, что каталог сценария вставляется before записей, вставляемых в результате 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', at the time when Python was built. Если не требуется тестирование для определенной версии системы, рекомендуется использовать следующую идиому:

if sys.platform.startswith('freebsd'):
    # Специфичный для FreeBSD код здесь ...
elif sys.platform.startswith('linux'):
    # Linux-специфичный код здесь ...
elif sys.platform.startswith('aix'):
    # AIX-специфичный код здесь ...

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

Система 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.prefix

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

Примечание

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

sys.ps1
sys.ps2

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

sys.setcheckinterval(interval)

Установить «контрольный интервал» для интерпретатор. Это целое число значение определяет, как часто интерпретатор проверяет периодические вещи, такие как поток переключатели и сигнальные обработчики. Значение по умолчанию - 100, т.е. проверка выполняется каждые 100 Python виртуальных инструкций. Установка большего значение может повысить производительность программ, использующих потоки. Установка значения значение <= 0 проверяет каждую виртуальную инструкцию, повышая быстродействие, а также накладные расходы.

Не рекомендуется, начиная с версии 3.2: Эта функция больше не имеет эффекта, так как внутренняя логика для поток переключения и асинхронных задач была переписана. Вместо этого используйте setswitchinterval().

sys.setdlopenflags(n)

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

Availability: Unix.

sys.setprofile(profilefunc)

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

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

Raises an auditing event sys.setprofile with no arguments.

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

'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.

sys.settrace(tracefunc)

Установить функцию трассировки системы, которая позволяет реализовать отладчик Python source код в 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; возвращает значение определяет новую функцию трассировки локальная. Per-опкод события не выдаются по умолчанию: их необходимо явно запросить, установив для f_trace_opcodes значение True на фрейм.

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

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

Дополнительные сведения об объектах код и фрейм см. в разделе Стандартная иерархия типов.

Raises an auditing event sys.settrace with no arguments.

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

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

sys.set_asyncgen_hooks(firstiter, finalizer)

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

Raises an auditing event sys.set_asyncgen_hooks_firstiter with no arguments.

Raises an auditing event sys.set_asyncgen_hooks_finalizer with no arguments.

Два события аудита возникают, поскольку базовый 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 атрибут объектов coroutine будет содержать кортеж кортежей (имя файла, номер строки, имя функции), описывающий трейсбэк, в котором был создан объект coroutine, с последним вызовом. При отключении cr_origin будет None.

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

Этот параметр потокоспецифичный.

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

Примечание

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

sys._enablelegacywindowsfsencoding()

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

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

Availability: Windows.

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

sys.stdin
sys.stdout
sys.stderr

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

  • stdin используемый для всех интерактивных входных данных (включая вызовы input());
  • stdout используемый для вывода print() и выражение инструкции и для подсказок input();
  • собственные запросы интерпретатор и сообщения об ошибках отправляются в stderr.

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

  • символ кодировки зависит от платформы. В платформах, отличных от Windows, используется кодировка локали (см. locale.getpreferredencoding()).

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

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

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

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

Примечание

Для записи или чтения двоичных данных из/в стандартные потоки используйте базовый двоичный объект 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.thread_info

Именованный кортеж хранение информации о реализации потоков.

Атрибут Объяснение
name

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

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

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

  • 'semaphore': блокировка использует семафор
  • 'mutex+cond': блокировка использует мьютекс и переменная условия
  • None если эта информация неизвестна
version Имя и версия библиотеки thread. Это строка или 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. Обычно значение представляет собой первые три символа version. Он предусмотрен в модуле sys в информационных целях; изменение этого значение не влияет на разделы реестра, используемый Python.

Availability: 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.» Публичный проект этого стандарта доступен по адресу http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.