sys – системно-зависимые параметры и функции¶sys – System-specific parameters and functions
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, и к функциям, которые активно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.abiflags¶ В системах POSIX, где Python был собран с помощью стандартного скрипта
configure, этот атрибут содержит флаги ABI, как указано в PEP 3149.Изменено в версии 3.8: Флаги по умолчанию стали пустой строкой (флаг
mдля pymalloc был удалён).Новое в версии 3.2.
-
sys.addaudithook(hook)¶ Добавляет вызываемый объект hook в список активных аудиторных хуков для текущего (под)интерпретатора.
Когда аудиторное событие инициируется через функцию
sys.audit(), каждый хук вызывается в порядке добавления с именем события и кортежем аргументов. Нативные хуки, добавленные с помощьюPySys_AddAuditHook(), вызываются первыми, затем хуки, добавленные в текущем (под)интерпретаторе. Затем хуки могут зарегистрировать событие, вызвать исключение для прерывания операции или полностью завершить процесс.Обратите внимание, что аудиторные хуки предназначены в первую очередь для сбора информации о внутренних или иным образом ненаблюдаемых действиях, будь то в Python или в библиотеках, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может легко отключить или обойти хуки, добавленные с помощью этой функции. Как минимум, любые чувствительные с точки зрения безопасности хуки должны быть добавлены с помощью C API
PySys_AddAuditHook()до инициализации среды выполнения, а любые модули, допускающие произвольное изменение памяти (такие какctypes), должны быть полностью удалены или находиться под тщательным наблюдением.Вызов
sys.addaudithook()сам по себе инициирует аудиторное событие с именемsys.addaudithookбез аргументов. Если какой-либо существующий хук вызывает исключение, производное отRuntimeError, новый хук не будет добавлен, а исключение будет подавлено. В результате вызывающие не могут предполагать, что их хук был добавлен, если только они не контролируют все существующие хуки.См. таблицу аудиторных событий для всех событий, инициируемых CPython, и PEP 578 для обсуждения исходного дизайна.
Новое в версии 3.8.
Изменено в версии 3.8.1: Исключения, производные от
Exception, но не отRuntimeError, больше не подавляются.Особенность реализации CPython: Когда трассировка включена (см.
settrace()), хуки Python трассируются только в том случае, если вызываемый объект имеет атрибут__cantrace__, установленный в истинное значение. В противном случае функции трассировки пропускают хук.
-
sys.argv¶ Список аргументов командной строки, переданных скрипту Python.
argv[0]– это имя скрипта (зависит от операционной системы, является ли это полным именем пути или нет). Если команда была выполнена с использованием опции командной строки-cинтерпретатора,argv[0]устанавливается в строку'-c'. Если имя скрипта не было передано интерпретатору Python,argv[0]– пустая строка.Для циклического чтения стандартного ввода или списка файлов, переданных в командной строке, обратитесь к модулю
fileinput.См. также
sys.orig_argv.Примечание
В Unix аргументы командной строки передаются в виде байтов от ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок «surrogateescape». Когда нужны исходные байты, их можно получить с помощью
[os.fsencode(arg) for arg in sys.argv].
-
sys.audit(event, *args)¶ Инициирует аудиторное событие и запускает все активные аудиторные хуки. event – строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются публичным и стабильным API и не должны изменяться между выпусками.
Например, одно из аудиторных событий называется
os.chdir. Это событие имеет один аргумент path, который будет содержать запрошенный новый рабочий каталог.sys.audit()вызовет существующие аудиторные хуки, передав имя события и аргументы, и вызовет первое исключение, возникшее в любом хуке. В общем случае, если возникает исключение, его не следует обрабатывать, и процесс должен быть завершен как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто зарегистрировать событие или прервать операцию, вызвав исключение.Хуки добавляются с помощью функций
sys.addaudithook()илиPySys_AddAuditHook().Нативным эквивалентом этой функции является
PySys_Audit(). По возможности предпочтительнее использовать нативную функцию.См. таблицу аудиторных событий для всех событий, инициируемых CPython.
Новое в версии 3.8.
-
sys.base_exec_prefix¶ Устанавливается во время запуска 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'.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¶ If this is true, Python won’t try to write
.pycfiles on the import of source modules. This value is initially set toTrueorFalsedepending on the-Bcommand line option and thePYTHONDONTWRITEBYTECODEenvironment variable, but you can set it yourself to control bytecode file generation.
-
sys.pycache_prefix¶ Если это установлено (не
None), Python будет записывать файлы.pycкэша байт-кода (и читать их) в параллельном дереве каталогов с корнем в этом каталоге, а не в каталогах__pycache__в дереве исходного кода. Любые каталоги__pycache__в дереве исходного кода будут игнорироваться, а новые файлы.pycбудут записываться внутри префикса pycache. Поэтому, если вы используетеcompileallв качестве этапа предварительной сборки, убедитесь, что запускаете его с тем же префиксом pycache (если он есть), который будете использовать во время выполнения.Относительный путь интерпретируется относительно текущего рабочего каталога.
This value is initially set based on the value of the
-Xpycache_prefix=PATHcommand-line option or thePYTHONPYCACHEPREFIXenvironment variable (command-line takes precedence). If neither are set, it isNone.Новое в версии 3.8.
-
sys.excepthook(type, value, traceback)¶ Эта функция выводит заданную трассировку и исключение в
sys.stderr.Когда возникает необработанное исключение, интерпретатор вызывает
sys.excepthookс тремя аргументами: класс исключения, экземпляр исключения и объект traceback. В интерактивном сеансе это происходит непосредственно перед возвратом управления в приглашение; в программе Python – перед завершением программы. Обработку таких исключений верхнего уровня можно настроить, присвоив другую функцию с тремя аргументамиsys.excepthook.Генерирует событие аудита
sys.excepthookс аргументамиhook,type,value,traceback, когда возникает неперехваченное исключение. Если обработчик не установлен,hookможет бытьNone. Если какой-либо обработчик генерирует исключение, производное отRuntimeError, вызов обработчика будет подавлен. В противном случае исключение обработчика аудита будет зарегистрировано как необрабатываемое и будет вызванsys.excepthook.См. также
Функция
sys.unraisablehook()обрабатывает необрабатываемые исключения, а функцияthreading.excepthook()обрабатывает исключения, возникающие вthreading.Thread.run().
-
sys.__breakpointhook__¶ -
sys.__displayhook__¶ -
sys.__excepthook__¶ -
sys.__unraisablehook__¶ Эти объекты содержат исходные значения
breakpointhook,displayhook,excepthookиunraisablehookна момент запуска программы. Они сохраняются, чтобыbreakpointhook,displayhookиexcepthook,unraisablehookможно было восстановить, если они вдруг будут заменены повреждёнными или альтернативными объектами.Новое в версии 3.7: __breakpointhook__
Новое в версии 3.8: __unraisablehook__
-
sys.exc_info()¶ Эта функция возвращает кортеж из трёх значений, содержащих информацию об обрабатываемом в данный момент исключении. Возвращаемая информация относится как к текущему потоку, так и к текущему фрейму стека. Если текущий фрейм стека не обрабатывает исключение, информация берётся из вызывающего фрейма стека или его вызывающего, и так далее, пока не будет найден фрейм, обрабатывающий исключение. Здесь «обработка исключения» означает «выполнение блока except». Для любого фрейма стека доступна только информация об исключении, обрабатываемом в данный момент.
Если нигде в стеке не обрабатывается исключение, возвращается кортеж, содержащий три значения
None. В противном случае возвращаются значения(type, value, traceback). Их смысл: type получает тип обрабатываемого исключения (подклассBaseException); value получает экземпляр исключения (экземпляр типа исключения); traceback получает объект 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 показывает состояние флагов командной строки. Атрибуты доступны только для чтения.
атрибут
флаг
debuginteractiveisolatedoptimizeno_user_siteno_siteignore_environmentverbosebytes_warningquiethash_randomizationdev_modeutf8_modeint_max_str_digits-X int_max_str_digits(ограничение длины преобразования целого числа в строку)Изменено в версии 3.2: Добавлен атрибут
quietдля нового флага-q.Новое в версии 3.2.3: Атрибут
hash_randomization.Изменено в версии 3.3: Удалён устаревший атрибут
division_warning.Изменено в версии 3.4: Добавлен атрибут
isolatedдля флага-Iisolated.Изменено в версии 3.7: Добавлен атрибут
dev_modeдля нового режима разработки Python, а также атрибутutf8_modeдля нового флага-Xutf8.Изменено в версии 3.10.7: Добавлен атрибут
int_max_str_digits.
-
sys.float_info¶ Именованный кортеж, содержащий информацию о типе float. В нём представлены низкоуровневые сведения о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей точкой, определённым в стандартном заголовочном файле
float.hдля языка программирования C; подробности см. в разделе 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], «Характеристики типов с плавающей точкой».атрибут
float.h макрос
объяснение
epsilonDBL_EPSILONразница между 1.0 и наименьшим значением, большим 1.0, которое представимо как float
См. также
math.ulp().digDBL_DIGmaximum number of decimal digits that can be faithfully represented in a float; see below
mant_digDBL_MANT_DIGfloat precision: the number of base-
radixdigits in the significand of a floatmaxDBL_MAXmaximum representable positive finite float
max_expDBL_MAX_EXPмаксимальное целое e, такое что
radix**(e-1)находится в диапазоне представимых конечных значений floatmax_10_expDBL_MAX_10_EXPмаксимальное целое число e такое, что
10**eнаходится в диапазоне представимых конечных чисел с плавающей запятойminDBL_MINminimum representable positive normalized float
минимальное целое e, такое что denormalized является нормализованным значением float
min_expDBL_MIN_EXPминимальное целое e, такое что
radix**(e-1)является нормализованным значением floatmin_10_expDBL_MIN_10_EXPminimum integer e such that
10**eis a normalized floatradixFLT_RADIXradix of exponent representation
roundsFLT_ROUNDSinteger representing the rounding mode for floating-point arithmetic. This reflects the value of the system
FLT_ROUNDSmacro at interpreter startup time:-1indeterminable,0toward zero,1to nearest,2toward positive infinity,3toward negative infinityВсе остальные значения для
FLT_ROUNDSописывают поведение округления, определяемое реализацией.Атрибут
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 значащих цифр – слишком много! >>> format(float(s), '.16g') # преобразование изменяет значение '9876543211234568'
-
sys.float_repr_style¶ Строка, указывающая, как ведёт себя функция
repr()для чисел с плавающей запятой. Если строка имеет значение'short', то для конечного floatx,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', если включён режим UTF-8 Python.
-
sys.getfilesystemencodeerrors()¶ Возвращает обработчик ошибок файловой системы: обработчик ошибок, используемый вместе с кодировкой файловой системы для преобразования между именами файлов в Unicode и байтовыми именами файлов. Кодировка файловой системы возвращается из
getfilesystemencoding().os.fsencode()иos.fsdecode()следует использовать, чтобы гарантировать применение правильной кодировки и режима обработки ошибок.Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsобъектаPyConfig.Новое в версии 3.6.
-
sys.get_int_max_str_digits()¶ Возвращает текущее значение ограничения длины преобразования целого числа в строку. См. также
set_int_max_str_digits().Новое в версии 3.10.7.
-
sys.getrefcount(object)¶ Возвращает счётчик ссылок на объект. Возвращаемое значение обычно на единицу больше, чем можно ожидать, поскольку включает (временную) ссылку как аргумент
getrefcount().Обратите внимание, что возвращаемое значение может не отражать действительное количество ссылок на объект. Поэтому не полагайтесь на его точность, за исключением случаев, когда оно равно 0 или 1.
-
sys.getrecursionlimit()¶ Возвращает текущее значение предела рекурсии – максимальную глубину стека интерпретатора Python. Этот предел предотвращает переполнение стека C и падение Python из-за бесконечной рекурсии. Его можно задать с помощью
setrecursionlimit().
-
sys.getsizeof(object[, default])¶ Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты возвращают корректные результаты, но для сторонних расширений это не обязательно – результат зависит от реализации.
Учитывается только память, непосредственно занимаемая объектом, а не память объектов, на которые он ссылается.
Если задан параметр default, он будет возвращён в случае, если объект не предоставляет способа получить размер. В противном случае возбуждается
TypeError.getsizeof()вызывает метод__sizeof__объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.См. рецепт рекурсивного sizeof для примера использования
getsizeof()рекурсивно для определения размера контейнеров и всего их содержимого.
-
sys.getswitchinterval()¶ Возвращает «интервал переключения потоков» интерпретатора; см.
setswitchinterval().Новое в версии 3.2.
-
sys._getframe([depth])¶ Возвращает объект кадра из стека вызовов. Если задан необязательный целочисленный параметр depth, возвращается кадр, находящийся на указанное количество вызовов ниже вершины стека. Если это глубже, чем стек вызовов, возбуждается
ValueError. Значение по умолчанию для depth равно нулю – возвращается кадр на вершине стека вызовов.Возбуждает событие аудита
sys._getframeбез аргументов.Особенности реализации 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 – кортеж из трёх элементов, все остальные значения – целые числа. К компонентам также можно обращаться по имени, так что
sys.getwindowsversion()[0]эквивалентноsys.getwindowsversion().major. Для совместимости с предыдущими версиями по индексу доступны только первые 5 элементов.платформа будет
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 для подробностей). Используйте её только для целей отладки.
-
sys.hash_info¶ Именованный кортеж, задающий параметры реализации числового хеша. Подробнее о хешировании числовых типов см. Хеширование числовых типов.
атрибут
объяснение
widthразрядность в битах, используемая для хеш-значений
modulusпростой модуль P, используемый для числовой схемы хеширования
infхэш-значение, возвращаемое для положительной бесконечности
nan(этот атрибут больше не используется)
imagмножитель для мнимой части комплексного числа
algorithmимя алгоритма хэширования для str, bytes и memoryview
hash_bitsвнутренний размер вывода алгоритма хэширования
seed_bitsразмер ключа начальной инициализации (seed) алгоритма хэширования
Новое в версии 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 and ABI Versioning.
-
sys.implementation¶ Объект, содержащий информацию о реализации текущего интерпретатора Python. Следующие атрибуты должны существовать во всех реализациях Python.
name – идентификатор реализации, например
'cpython'. Фактическая строка определяется реализацией Python, но гарантированно состоит из строчных букв.version – это именованный кортеж в том же формате, что и
sys.version_info. Он представляет версию реализации Python. Это отличается от конкретной версии языка Python, которой соответствует текущий интерпретатор, которая представленаsys.version_info. Например, для PyPy 1.8sys.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_digitsizeof_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-битной платформе.
-
sys.maxunicode¶ Целое число, задающее значение самого большого кодового пункта Unicode, то есть
1114111(0x10FFFFв шестнадцатеричной записи).Изменено в версии 3.3: До PEP 393,
sys.maxunicodeбыл либо0xFFFF, либо0x10FFFF, в зависимости от параметра конфигурации, определявшего, хранятся ли символы Unicode как 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следует добавлять только строки и байты; все остальные типы данных игнорируются при импорте
-
sys.path_hooks¶ Список вызываемых объектов, которые принимают аргумент-путь и пытаются создать искатель для этого пути. Если искатель может быть создан, вызываемый объект должен вернуть его, иначе – возбудить
ImportError.Впервые описано в PEP 302.
-
sys.path_importer_cache¶ Словарь, выступающий в роли кэша для объектов finder. Ключами являются пути, переданные в
sys.path_hooks, а значениями – найденные finder'ы. Если путь является корректным файловым системным путём, но наsys.path_hooksне найден ни один finder, то сохраняетсяNone.Впервые описано в PEP 302.
Изменено в версии 3.3:
Noneсохраняется вместоimp.NullImporter, когда finder не найден.
-
sys.platform¶ Эта строка содержит идентификатор платформы, который можно использовать, например, для добавления платформозависимых компонентов к
sys.path.Для систем Unix, кроме Linux и AIX, это имя ОС в нижнем регистре, полученное с помощью
uname -s, к которому добавляется первая часть версии, возвращаемаяuname -r, например'sunos5'или'freebsd8', на момент сборки Python. Если не требуется проверять конкретную версию системы, рекомендуется использовать следующий идиоматический код: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.platlibdir¶ Имя каталога библиотеки, специфичного для платформы. Используется для построения пути к стандартной библиотеке и путей к установленным модулям расширений.
Оно равно
"lib"на большинстве платформ. На Fedora и SuSE на 64-битных платформах оно равно"lib64", что даёт следующие путиsys.path(гдеX.Y– это версия Pythonmajor.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.
-
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 или используя новый параметр командной строки-Xutf8и переменную окружения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¶ Frozenset строк, содержащий имена модулей стандартной библиотеки.
Он одинаков на всех платформах. Также перечислены модули, недоступные на некоторых платформах, и модули, отключённые при сборке 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, если эта информация неизвестна
Имя и версия библиотеки потоков. Это строка, или
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. «Programming languages – C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.