sys — Параметры и функции, специфичные для системы
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, которые тесно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.abiflags -
В системах POSIX, где Python был построен с использованием стандартного
configureскрипта, содержит флаги ABI, как указано в PEP 3149.Изменено в версии 3.8: Значения флагов по умолчанию стали пустой строкой (
mфлаг для pymalloc был удален).Добавлен в версии 3.2.
-
sys.addaudithook(hook) -
Добавляет вызываемый объект hook в список активных аудиторных хуков для текущего (под)интерпретатора.
Когда аудиторное событие генерируется через функцию
sys.audit(), каждый хук будет вызван в порядке его добавления с именем события и кортежем аргументов. Встроенные хуки, добавленные с помощьюPySys_AddAuditHook(), вызываются первыми, а затем хуки, добавленные в текущий (под)интерпретатор. Хуки могут затем записывать событие, поднимать исключение для прерывания операции или полностью завершать процесс.Обратите внимание, что аудиторные хуки в основном предназначены для сбора информации об внутренних или иных не наблюдаемых действиях, как со стороны Python, так и со стороны библиотек, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может тривиально отключить или обойти хуки, добавленные с помощью этой функции. По меньшей мере, все хуки, чувствительные к безопасности, должны быть добавлены с использованием API на C
PySys_AddAuditHook()перед инициализацией среды выполнения, а любые модули, позволяющие произвольное изменение памяти (такие какctypes) должны быть полностью удалены или тщательно отслеживаться.Вызов
sys.addaudithook()сам по себе вызывает аудиторное событие с именемsys.addaudithookбез аргументов. Если какой-либо существующий хук вызывает исключение, производное отRuntimeError, новый хук не будет добавлен, а исключение будет подавлено. В результате, вызывающие функции не могут гарантировать, что их хук был добавлен, если они не контролируют все существующие хуки.См. таблицу аудиторных событий для всех событий, генерируемых CPython, и PEP 578 для первоначального обсуждения дизайна.
Добавлен в версии 3.8.
Изменено в версии 3.8.1: Исключения, производные от
Exception, но не отRuntimeError, больше не подавляются.Деталь реализации CPython: При включенном отслеживании (см.
settrace()) хуки Python отслеживаются только если у вызываемого объекта есть член__cantrace__, установленный в истинное значение. В противном случае функции отслеживания пропустят хук.
-
sys.argv -
Список аргументов командной строки, переданных скрипту Python.
argv[0]— имя скрипта (зависит от операционной системы, является ли это полным путем или нет). Если интерпретатор был запущен с опцией командной строки-c,argv[0]установлен в строку'-c'. Если скрипт не был передан интерпретатору Python,argv[0]— пустая строка.Для перебора стандартного ввода или списка файлов, переданных в командной строке, см. модуль
fileinput.См. также
sys.orig_argv.Примечание
В Unix аргументы командной строки передаются в виде байтов от ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок «surrogateescape». Если вам нужны исходные байты, вы можете получить их с помощью
[os.fsencode(arg) for arg in sys.argv].
-
sys.audit(event, *args) -
Вызывает аудиторное событие и запускает любые активные аудиторные хуки. event — строка, определяющая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются публичным и стабильным API и не должны изменяться между выпусками.
Например, одно аудиторное событие называется
os.chdir. Это событие имеет один аргумент path, который будет содержать запрашиваемый новый рабочий каталог.sys.audit()вызовет существующие аудиторные хуки, передав имя события и аргументы, и повторно поднимет первое исключение из любого хука. В целом, если возникает исключение, его не следует обрабатывать, и процесс должен быть завершен как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто записать событие или прервать операцию, подняв исключение.Хуки добавляются с помощью функций
sys.addaudithook()илиPySys_AddAuditHook().Встроенный эквивалент этой функции —
PySys_Audit(). При возможности предпочтительнее использовать встроенную функцию.См. таблицу аудиторных событий для всех событий, генерируемых CPython.
Добавлен в версии 3.8.
-
sys.base_exec_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, в то же значение, что иexec_prefix. Если работа не ведется в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаружит, что используется виртуальная среда, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся указателями на базовую установку Python (той, из которой была создана виртуальная среда).Добавлен в версии 3.3.
-
sys.base_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, в то же значение, что иprefix. Если работа не ведется в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаружит, что используется виртуальная среда, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся указателями на базовую установку Python (той, из которой была создана виртуальная среда).Добавлен в версии 3.3.
-
sys.byteorder -
Указатель родного порядка байтов. Имеет значение
'big'на платформах с big-endian (старший байт первым), и'little'на платформах с little-endian (младший байт первым).
-
sys.builtin_module_names -
Кортеж строк, содержащий имена всех модулей, скомпилированных в эту интерпретацию Python. (Эта информация недоступна никаким другим способом —
modules.keys()перечисляет только импортированные модули.)См. также список
sys.stdlib_module_names.
-
sys.call_tracing(func, args) -
Вызывает
func(*args), в то время как отслеживание включено. Состояние отслеживания сохраняется и восстанавливается после этого. Предполагается, что это вызов из отладчика из контрольной точки, для рекурсивной отладки или профилирования другого кода.Отслеживание приостанавливается во время вызова функции отслеживания, установленной с помощью
settrace()илиsetprofile(), чтобы избежать бесконечной рекурсии.call_tracing()позволяет явную рекурсию функции отслеживания.
-
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) -
Если значение не
None, эта функция выводитrepr(value)вsys.stdout, и сохраняет значение в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 # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = valueИзменено в версии 3.2: Используется обработчик ошибок
'backslashreplace'дляUnicodeEncodeError.
-
sys.dont_write_bytecode -
Если это значение истинно, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это значение изначально установлено вTrueилиFalseв зависимости от командной строки-Bи переменной средыPYTHONDONTWRITEBYTECODE, но вы можете установить его самостоятельно для управления генерацией файлов байткода.
-
sys._emscripten_info -
Именованная кортеж, содержащая информацию об окружающей среде на платформе wasm32-emscripten. Именованный кортеж предварительный и может быть изменён в будущем.
-
_emscripten_info.emscripten_version -
Версия Emscripten как кортеж целых чисел (major, minor, micro), например,
(3, 1, 8).
-
_emscripten_info.runtime -
Строка среды выполнения, например, пользовательский агент браузера,
'Node.js v14.18.2', или'UNKNOWN'.
-
_emscripten_info.pthreads -
Trueесли Python был скомпилирован с поддержкой Emscripten pthreads.
-
Trueесли Python был скомпилирован с поддержкой общей памяти.
Доступность: Emscripten.
Новое в версии 3.11.
-
-
sys.pycache_prefix -
Если это установлено (не
None), Python будет писать файлы кеша байткода.pycв (и читать из) параллельной древовидной структуре каталогов, корень которой — этот каталог, вместо каталогов__pycache__в структуре каталогов исходного кода. Любые каталоги__pycache__в структуре каталогов исходного кода будут проигнорированы, а новые файлы.pycбудут записаны в префиксе кеша pycache. Таким образом, если вы используетеcompileallкак предварительный этап сборки, вы должны убедиться, что запускаете его с тем же префиксом кеша pycache (если он используется) что и при выполнении.Относительный путь интерпретируется относительно текущей рабочей директории.
Это значение устанавливается по умолчанию на основе значения командной опции
-Xpycache_prefix=PATHили переменной средыPYTHONPYCACHEPREFIX(командная строка имеет приоритет). Если ни то, ни другое не установлено, то этоNone.Новое в версии 3.8.
-
sys.excepthook(type, value, traceback) -
Эта функция выводит заданный стек отладки и исключение в
sys.stderr.Когда поднимается исключение, отличное от
SystemExit, и оно не перехвачено, интерпретатор вызывает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.exception() -
Эта функция, когда вызывается во время выполнения обработчика исключений (например,
exceptилиexcept*блока), возвращает экземпляр исключения, перехваченного этим обработчиком. Когда обработчики исключений вложены друг в друга, доступен только экземпляр исключения, обработанный внутренним обработчиком.Если никакой обработчик исключений не выполняется, эта функция возвращает
None.Добавлено в версии 3.11.
-
sys.exc_info() -
Эта функция возвращает представление исключения в старом стиле. Если исключение
eв настоящее время обрабатывается (поэтомуexception()вернётe),exc_info()возвращает кортеж(type(e), e, e.__traceback__)Это кортеж, содержащий тип исключения (подклассBaseException), само исключение и объект стека отладки, который обычно содержит стек вызовов в момент возникновения исключения.Если исключение не обрабатывается нигде в стеке, эта функция возвращает кортеж из трёх
Noneзначений.Изменено в версии 3.11: Поля
typeиtracebackтеперь берутся изvalue(экземпляра исключения), поэтому, когда исключение изменяется во время обработки, изменения отражаются в результатах последующих вызововexc_info().
-
sys.exec_prefix -
Строка, содержащая префикс каталога, специфичный для сайта, куда установлены платформозависимые файлы Python; по умолчанию это также
'/usr/local'. Это можно установить во время компиляции с помощью аргумента--exec-prefixк скрипту configure. В частности, все конфигурационные файлы (например, заголовочный файлpyconfig.h) устанавливаются в каталогexec_prefix/lib/pythonX.Y/config, а модули общих библиотек — вexec_prefix/lib/pythonX.Y/lib-dynload, где X.Y — номер версии Python, например3.2.Примечание
Если используется виртуальная среда virtual environment, это значение в
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 отображает состояние флагов командной строки. Атрибуты только для чтения.
-
flags.debug
-
flags.inspect
-
flags.interactive
-
flags.isolated
-
flags.optimize
-
flags.dont_write_bytecode
-
flags.no_user_site
-
flags.no_site
-
flags.ignore_environment
-
flags.verbose
-
flags.bytes_warning
-
flags.quiet
-
flags.hash_randomization
-
flags.dev_mode
-
flags.utf8_mode
-
flags.safe_path
-
flags.int_max_str_digits
-X int_max_str_digits(Предел длины строки целого числа при преобразовании)-
flags.warn_default_encoding
Изменено в версии 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: Добавлен атрибут
warn_default_encodingдля флага-Xwarn_default_encoding.Изменено в версии 3.11: Добавлен атрибут
safe_pathдля опции-P.Изменено в версии 3.11: Добавлен атрибут
int_max_str_digits. -
-
sys.float_info -
A именованный кортеж содержащий информацию о типе float. Он содержит информацию низкого уровня о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определённым в стандартном заголовочном файле
float.hдля языка программирования ‘C’; см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], ‘Характеристики типов с плавающей запятой’, для получения подробностей.Атрибуты float_infoименованного кортежаатрибут
макрос float.h
объяснение
-
float_info.epsilon
DBL_EPSILONразница между 1.0 и наименьшим значением, большим 1.0, которое может быть представлено как float.
См. также
math.ulp().-
float_info.dig
DBL_DIGМаксимальное количество десятичных знаков, которые могут быть достоверно представлены в float; см. ниже.
-
float_info.mant_dig
DBL_MANT_DIGТочность float: число цифр по основанию
radixв мантиссе float.-
float_info.max
DBL_MAXМаксимальное представимое положительное конечное float.
-
float_info.max_exp
DBL_MAX_EXPМаксимальное целое число e, такое что
radix**(e-1)является представимым конечным float.-
float_info.max_10_exp
DBL_MAX_10_EXPМаксимальное целое число e, такое что
10**eнаходится в диапазоне представимых конечных float.-
float_info.min
DBL_MINМинимальное представимое положительное нормализованное float.
Используйте
math.ulp(0.0)для получения наименьшего положительного ненармализованного представимого float.-
float_info.min_exp
DBL_MIN_EXPМинимальное целое число e, такое что
radix**(e-1)является нормализованным float.-
float_info.min_10_exp
DBL_MIN_10_EXPМинимальное целое число e, такое что
10**eявляется нормализованным float.-
float_info.radix
FLT_RADIXОснование представления экспоненты.
-
float_info.rounds
FLT_ROUNDSЦелое число, представляющее режим округления для арифметики с плавающей запятой. Это отражает значение системного
FLT_ROUNDSмакроса во время запуска интерпретатора:-
-1: неопределяемо -
0: к нулю -
1: к ближайшему -
2: к положительной бесконечности -
3: к отрицательной бесконечности
Все остальные значения для
FLT_ROUNDSхарактеризуют поведение округления, определённое реализацией.Атрибут
sys.float_info.digтребует дополнительного объяснения. Еслиs— это любая строка, представляющая десятичное число с не более чемsys.float_info.digзначащими цифрами, то преобразованиеsв float и обратно восстановит строку, представляющую то же десятичное значение:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # decimal string with 15 significant digits >>> format(float(s), '.15g') # convert to float and back -> same value '3.14159265358979'
Но для строк с более чем
sys.float_info.digзначащими цифрами, это не всегда верно:>>> s = '9876543211234567' # 16 significant digits is too many! >>> format(float(s), '.16g') # conversion changes value '9876543211234568'
-
-
sys.float_repr_style -
Строка, указывающая, как функция
repr()ведёт себя для float. Если строка имеет значение'short', то для конечного floatx,repr(x)стремится произвести короткую строку с свойством, чтоfloat(repr(x)) == x. Это обычное поведение в Python 3.1 и более поздних версиях. В противном случае,float_repr_styleимеет значение'legacy'иrepr(x)ведёт себя так же, как и в версиях Python до 3.1.New in version 3.1.
-
sys.getallocatedblocks() -
Возвращает количество блоков памяти, выделенных интерпретатором в данный момент, независимо от их размера. Эта функция в основном полезна для отслеживания и отладки утечек памяти. Из-за внутренних кэшей интерпретатора результат может меняться от вызова к вызову; вам может потребоваться вызвать
_clear_type_cache()иgc.collect(), чтобы получить более предсказуемые результаты.Если Python-сборка или реализация не может разумно вычислить эту информацию,
getallocatedblocks()может вернуть 0 вместо этого.New in version 3.4.
-
sys.getandroidapilevel() -
Возвращает версию API Android, определённую во время сборки, как целое число.
Доступность: Android.
New in version 3.7.
-
sys.getdefaultencoding() -
Возвращает имя текущего кодирования по умолчанию для строк, используемого реализацией Unicode.
-
sys.getdlopenflags() -
Возвращает текущее значение флагов, используемых для вызовов
dlopen(). Символьные имена значений флагов можно найти в модулеos(константыRTLD_xxx, например,os.RTLD_LAZY).Доступность: Unix.
-
sys.getfilesystemencoding() -
Получить кодировку файловой системы: кодировку, используемую с обработчиком ошибок файловой системы для преобразования между именами файлов Unicode и именами файлов в байтах. Обработчик ошибок файловой системы возвращается функцией
getfilesystemencodeerrors().Для лучшей совместимости в качестве имён файлов следует всегда использовать тип str, хотя поддержка представления имён файлов в байтах также сохраняется. Функции, принимающие или возвращающие имена файлов, должны поддерживать как тип str, так и тип bytes и внутри преобразовывать их в предпочтительное для системы представление.
os.fsencode()иos.fsdecode()должны использоваться для гарантированного применения правильной кодировки и режима обработки ошибок.Кодировка и обработчик ошибок файловой системы настраиваются во время запуска Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsструктурыPyConfig.Изменено в версии 3.2:
getfilesystemencoding()больше не может бытьNone.Изменено в версии 3.6: Windows больше не гарантирует возврат
'mbcs'. См. PEP 529 и_enablelegacywindowsfsencoding()для получения дополнительной информации.Изменено в версии 3.7: Возвращает
'utf-8'если включен режим Python UTF-8.
-
sys.getfilesystemencodeerrors() -
Получить обработчик ошибок файловой системы: обработчик ошибок, используемый с кодировкой файловой системы для преобразования между именами файлов Unicode и именами файлов в байтах. Кодировка файловой системы возвращается функцией
getfilesystemencoding().os.fsencode()иos.fsdecode()должны использоваться для гарантированного применения правильной кодировки и режима обработки ошибок.Кодировка и обработчик ошибок файловой системы настраиваются во время запуска Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsструктурыPyConfig.Введено в версии 3.6.
-
sys.get_int_max_str_digits() -
Возвращает текущее значение для ограничения длины строки при преобразовании целого числа. Также см.
set_int_max_str_digits().Введено в версии 3.11.
-
sys.getrefcount(object) -
Возвращает счётчик ссылок на объект object. Возвращаемое значение обычно на единицу больше, чем ожидалось, так как оно включает (временную) ссылку в качестве аргумента функции
getrefcount().Обратите внимание, что возвращаемое значение может не отражать фактическое количество ссылок на объект. Следовательно, не полагайтесь на точность возвращаемого значения, за исключением значений 0 или 1.
-
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 равен нулю, что возвращает кадр на вершине стека вызовов.Вызывает событие аудита
sys._getframeс аргументомframe.Деталь реализации CPython: Эта функция предназначена только для внутренних и специализированных целей. Её существование в других реализациях Python не гарантируется.
-
sys.getprofile() -
Получить функцию профилирования, установленную с помощью
setprofile().
-
sys.gettrace() -
Получить функцию отслеживания, установленную с помощью
settrace().Деталь реализации CPython: Функция
gettrace()предназначена только для реализации отладчиков, профилировщиков, инструментов анализа покрытия и им подобных. Её поведение является частью платформы реализации, а не частью определения языка, и, таким образом, может быть недоступно во всех реализациях Python.
-
sys.getwindowsversion() -
Возвращает кортеж с именованными элементами, описывающий текущую версию Windows. Именованные элементы: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version — кортеж из 3 элементов, а все остальные значения — целые числа. К элементам можно обратиться по имени, поэтому
sys.getwindowsversion()[0]эквивалентноsys.getwindowsversion().major. Для совместимости со старыми версиями, только первые 5 элементов доступны по индексу.platform будет
2(VER_PLATFORM_WIN32_NT).product_type может принимать одно из следующих значений:
Константа
Значение
1(VER_NT_WORKSTATION)Система — рабочая станция.
2(VER_NT_DOMAIN_CONTROLLER)Система — контроллер домена.
3(VER_NT_SERVER)Система — сервер, но не контроллер домена.
Эта функция оборачивает функцию Win32
GetVersionEx(); см. документацию Microsoft поOSVERSIONINFOEX()для получения дополнительной информации об этих полях.platform_version возвращает главную версию, второстепенную версию и номер сборки текущей операционной системы, а не версию, эмулируемую для процесса. Предназначен для использования в журнале, а не для обнаружения функций.
Примечание
platform_version извлекает версию из kernel32.dll, которая может отличаться от версии ОС. Используйте модуль
platformдля получения точной версии ОС.Доступность: Windows.
Изменено в версии 3.2: Изменено на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
Изменено в версии 3.6: Добавлен platform_version
-
sys.get_asyncgen_hooks() -
Возвращает объект asyncgen_hooks, похожий на
namedtupleвида(firstiter, finalizer), где firstiter и finalizer ожидают либоNoneили функции, принимающие итератор асинхронного генератора в качестве аргумента, и используются для планирования завершения работы асинхронного генератора в цикле событий.Новое в версии 3.6: См. PEP 525 для получения более подробной информации.
Примечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей.)
-
sys.get_coroutine_origin_tracking_depth() -
Получить текущую глубину отслеживания происхождения корутины, установленную с помощью
set_coroutine_origin_tracking_depth().Новое в версии 3.7.
Примечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей.) Используйте только для отладки.
-
sys.hash_info -
Именованный кортеж, содержащий параметры реализации числового хеширования. Для получения дополнительной информации о хешировании числовых типов см. Хеширование числовых типов.
-
hash_info.width -
Ширина в битах, используемая для значений хеша
-
hash_info.modulus -
Простой модуль P, используемый для схемы числового хеширования
-
hash_info.inf -
Значение хеша, возвращаемое для положительной бесконечности
-
hash_info.nan -
(Этот атрибут больше не используется)
-
hash_info.imag -
Множитель, используемый для мнимой части комплексного числа
-
hash_info.algorithm -
Название алгоритма для хеширования str, bytes и memoryview
-
hash_info.hash_bits -
Внутренний размер вывода алгоритма хеширования
-
hash_info.seed_bits -
Размер ключа инициализации алгоритма хеширования
Новое в версии 3.2.
Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits
-
-
sys.hexversion -
Номер версии, закодированный как одно целое число. Гарантируется, что он увеличивается с каждой версией, включая надлежащую поддержку релизов, не предназначенных для производства. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 1.5.2, используйте:
if sys.hexversion >= 0x010502F0: # use some advanced feature ... else: # use an alternative implementation or warn the user ...Это называется
hexversion, поскольку оно действительно имеет смысл только при просмотре результата его передачи в встроенную функциюhex(). Именованный кортеж named tuplesys.version_infoможет быть использован для более удобного представления той же информации.Дополнительные сведения о
hexversionможно найти в Версионирование API и ABI.
-
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 -
A именованный кортеж содержащий информацию об внутренней представлении целых чисел в Python. Атрибуты являются только для чтения.
-
int_info.bits_per_digit -
Количество битов, хранящихся в каждом разряде. Целые числа Python хранятся во внутренней базе
2**int_info.bits_per_digit.
-
int_info.sizeof_digit -
Размер в байтах типа C, используемого для представления разряда.
-
int_info.default_max_str_digits -
Значение по умолчанию для
sys.get_int_max_str_digits()в случае, если оно не настроено явно.
-
int_info.str_digits_check_threshold -
Минимальное ненулевое значение для
sys.set_int_max_str_digits(),PYTHONINTMAXSTRDIGITSили-X int_max_str_digits.
Введено в версии 3.1.
Изменено в версии 3.11: Добавлены
default_max_str_digitsиstr_digits_check_threshold. -
-
sys.__interactivehook__ -
Если этот атрибут существует, его значение вызывается автоматически (без аргументов) при запуске интерпретатора в интерактивном режиме. Это происходит после чтения файла
PYTHONSTARTUP, чтобы вы могли установить этот обработчик там. Модульsiteустанавливает его.При вызове обработчика во время запуска генерируется событие аудита
cpython.run_interactivehookс объектом обработчика в качестве аргумента.Введено в версии 3.4.
-
sys.intern(string) -
Добавляет строку в таблицу «интернированных» строк и возвращает интернированную строку – которая является строкой или её копией. Интернирование строк полезно для повышения производительности при поиске в словарях – если ключи в словаре интернированы, и ключ поиска интернирован, сравнение ключей (после хэширования) может выполняться путем сравнения указателей вместо сравнения строк. Обычно имена, используемые в программах 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()которых вызываются, чтобы определить, может ли какой-либо из объектов найти импортируемый модуль. По умолчанию содержит записи, реализующие стандартные семантики импорта 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, плюс зависимый от установки по умолчанию.По умолчанию, при запуске программы, потенциально небезопасный путь добавляется в начало
sys.path(перед записями, добавленными в результатеPYTHONPATH):-
python -m moduleкомандная строка: добавить текущую рабочую директорию в начало. -
python script.pyкомандная строка: добавить директорию скрипта в начало. Если это символическая ссылка, разрешить символические ссылки. -
python -c codeиpython(REPL) командные строки: добавить пустую строку, что означает текущую рабочую директорию.
Чтобы не добавлять этот потенциально небезопасный путь, используйте опцию командной строки
-Pили переменную окруженияPYTHONSAFEPATH.Программа может изменять этот список для своих целей. В
sys.pathдолжны добавляться только строки; все другие типы данных игнорируются во время импорта. -
-
sys.path_hooks -
Список вызываемых объектов, которые принимают аргумент пути для попытки создания поисковика для пути. Если поисковик может быть создан, вызываемый объект должен вернуть его, иначе поднять
ImportError.Первоначально указано в PEP 302.
-
sys.path_importer_cache -
Словарь, используемый в качестве кэша для объектов поисковика. Ключами являются пути, которые были переданы
sys.path_hooks, а значениями — найденные поисковики. Если путь является допустимым путем в файловой системе, но вsys.path_hooksне найден поисковик, тоNoneхранится.Первоначально указано в PEP 302.
Изменено в версии 3.3:
Noneхранится вместоimp.NullImporterв случае отсутствия поисковика.
-
sys.platform -
Эта строка содержит идентификатор платформы, который может использоваться для добавления компонентов, специфичных для платформы, в
sys.path, например.Для систем Unix, кроме Linux и AIX, это строка с именем ОС в нижнем регистре, возвращаемая
uname -sс первой частью версии, возвращаемойuname -r, например'sunos5'или'freebsd8', в момент построения Python. Если вы не хотите тестировать на конкретную версию системы, рекомендуется использовать следующий фрагмент:if sys.platform.startswith('freebsd'): # FreeBSD-specific code here... elif sys.platform.startswith('linux'): # Linux-specific code here... elif sys.platform.startswith('aix'): # AIX-specific code here...Для других систем значения следующие:
Система
platformзначениеAIX
'aix'Emscripten
'emscripten'Linux
'linux'WASI
'wasi'Windows
'win32'Windows/Cygwin
'cygwin'macOS
'darwin'Изменено в версии 3.3: В Linux,
sys.platformбольше не содержит номер основной версии. Он всегда равен'linux', а не'linux2'или'linux3'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать приведенный выше фрагмент.Изменено в версии 3.8: В AIX,
sys.platformбольше не содержит номер основной версии. Он всегда равен'aix', а не'aix5'или'aix7'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать приведенный выше фрагмент.См. также
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.11.
-
sys.setprofile(profilefunc) -
Установите функцию профилирования системы, которая позволяет реализовать профайлер кода Python в Python. См. главу Профайлеры Python для получения дополнительной информации о профайлере Python. Функция профилирования системы вызывается аналогично функции отслеживания системы (см.
settrace()), но вызывается с другими событиями, например, она не вызывается для каждой выполняемой строки кода (только при вызове и возвращении, но событие возврата сообщается даже при возникновении исключения). Функция специфична для потока, но у профайлера нет возможности узнать о переключениях контекста между потоками, поэтому использование этой функции в присутствии нескольких потоков не имеет смысла. Кроме того, её возвращаемое значение не используется, поэтому она может просто вернутьNone. Ошибка в функции профилирования приведёт к её отмене.Примечание
Такой же механизм отслеживания используется для
setprofile()какsettrace(). Чтобы отслеживать вызовы сsetprofile()внутри функции отслеживания (например, в точке останова отладчика), см.call_tracing().Функции профилирования должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка:
'call','return','c_call','c_return', или'c_exception'. arg зависит от типа события.События имеют следующее значение:
-
'call' -
Функция вызывается (или какая-либо другая область кода введена). Функция профилирования вызывается; arg — это
None. -
'return' -
Функция (или другая область кода) собирается вернуть значение. Функция профилирования вызывается; arg — это значение, которое будет возвращено, или
Noneесли событие вызвано возникновением исключения. -
'c_call' -
Функция C собирается вызваться. Это может быть функция расширения или встроенная функция. arg — объект функции C.
-
'c_return' -
Функция C вернула значение. arg — объект функции C.
-
'c_exception' -
Функция C подняла исключение. arg — объект функции C.
Возбуждает событие аудита
sys.setprofileбез аргументов. -
-
sys.setrecursionlimit(limit) -
Установите максимальную глубину стека интерпретатора Python в limit. Это ограничение предотвращает бесконечную рекурсию, которая может вызвать переполнение стека C и сбой Python.
Максимальное возможное ограничение зависит от платформы. Пользователю может потребоваться установить более высокое ограничение, если у него есть программа, которая требует глубокой рекурсии и платформа поддерживает более высокое ограничение. Это следует делать с осторожностью, так как слишком высокое ограничение может привести к сбою.
Если новое ограничение слишком низкое на текущей глубине рекурсии, возникает исключение
RecursionError.Изменено в версии 3.5.1: Теперь исключение
RecursionErrorвозникает, если новое ограничение слишком низкое на текущей глубине рекурсии.
-
sys.setswitchinterval(interval) -
Установите интервал переключения потоков интерпретатора (в секундах). Это значение с плавающей запятой определяет желательную продолжительность «времени» выделенных для одновременной работы потоков Python. Обратите внимание, что фактическое значение может быть выше, особенно если используются длительно выполняющиеся внутренние функции или методы. Кроме того, какой поток будет запланирован в конце интервала, — это решение операционной системы. У интерпретатора нет собственного планировщика.
Новое в версии 3.2.
-
sys.settrace(tracefunc) -
Устанавливает функцию отслеживания системы, что позволяет реализовать отладчик кода Python в Python. Функция зависит от потока; для поддержки отладчика нескольких потоков необходимо зарегистрировать функцию отслеживания с помощью
settrace()для каждого отлаживаемого потока или использоватьthreading.settrace().Функции отслеживания должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка:
'call','line','return','exception'или'opcode'. arg зависит от типа события.Функция отслеживания вызывается (с event установленным в
'call') всякий раз, когда вводится новая область видимости; она должна возвращать ссылку на локальную функцию отслеживания, которая будет использоваться для новой области видимости, илиNoneв противном случае.Локальная функция отслеживания должна возвращать ссылку на себя или на другую функцию, которая затем будет использоваться в качестве локальной функции отслеживания для области видимости.
Если в функции отслеживания произошла ошибка, она будет удалена, так же, как и при вызове
settrace(None).Примечание
Отслеживание отключено при вызове функции отслеживания (например, функции, установленной с помощью
settrace()). Для рекурсивного отслеживания см.call_tracing().События имеют следующее значение:
-
'call' -
Функция вызывается (или вводится какой-либо другой блок кода). Вызывается глобальная функция отслеживания; arg —
None; возвращаемое значение определяет локальную функцию отслеживания. -
'line' -
Интерпретатор собирается выполнить новую строку кода или повторно выполнить условие цикла. Вызывается локальная функция отслеживания; arg —
None; возвращаемое значение определяет новую локальную функцию отслеживания. См.Objects/lnotab_notes.txtдля подробного объяснения того, как это работает. События на строке могут быть отключены для фрейма, установивf_trace_linesнаFalseв этом фрейме. -
'return' -
Функция (или другой блок кода) собирается вернуть. Вызывается локальная функция отслеживания; arg — значение, которое будет возвращено, или
Noneесли событие вызвано возбуждением исключения. Возвращаемое значение функции отслеживания игнорируется. -
'exception' -
Произошло исключение. Вызывается локальная функция отслеживания; arg — кортеж
(exception, value, traceback); возвращаемое значение определяет новую локальную функцию отслеживания. -
'opcode' -
Интерпретатор собирается выполнить новый оператор (см.
disдля получения подробностей об операторах). Вызывается локальная функция отслеживания; arg —None; возвращаемое значение определяет новую локальную функцию отслеживания. События на оператор не генерируются по умолчанию: их необходимо явно запросить, установивf_trace_opcodesнаTrueв фрейме.
Обратите внимание, что по мере распространения исключения по цепочке вызывающих функций генерируется событие
'exception'.Для более тонкого использования можно установить функцию отслеживания, явно назначив
frame.f_trace = tracefunc, а не полагаясь на ее косвенное установление через возвращаемое значение уже установленной функции отслеживания. Это также необходимо для активации функции отслеживания в текущем фрейме, чегоsettrace()не делает. Обратите внимание, что для работы этого необходимо было установить глобальную функцию отслеживания с помощьюsettrace()для активации механизма отслеживания во время выполнения, но это не обязательно должна быть та же функция отслеживания (например, это может быть функция отслеживания с низкой загрузкой, которая просто возвращаетNoneдля немедленного отключения себя в каждом фрейме).Дополнительную информацию об объектах кода и фреймов можно найти в Иерархии стандартных типов.
Возбуждает событие аудита
sys.settraceбез аргументов.Подробность реализации CPython: Функция
settrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, и, следовательно, может быть недоступно во всех реализациях Python.Изменено в версии 3.7:
'opcode'добавлен тип события;f_trace_linesиf_trace_opcodesдобавлены в атрибуты фреймов -
-
sys.set_asyncgen_hooks(firstiter, finalizer) -
Принимает два необязательных ключевых аргумента, которые являются вызываемыми функциями, принимающими итератор асинхронного генератора в качестве аргумента. Вызываемая функция firstiter будет вызвана, когда асинхронный генератор будет итерироваться в первый раз. finalizer будет вызвана, когда асинхронный генератор собирается быть удален сборщиком мусора.
Возбуждает событие аудита
sys.set_asyncgen_hooks_firstiterбез аргументов.Возбуждает событие аудита
sys.set_asyncgen_hooks_finalizerбез аргументов.Два события аудита возбуждаются, потому что базовая API состоит из двух вызовов, каждый из которых должен возбудить свое событие.
Введено в версии 3.6: См. PEP 525 для получения дополнительных сведений и пример референции метода finalizer см. в реализации
asyncio.Loop.shutdown_asyncgensв Lib/asyncio/base_events.pyПримечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей).
-
sys.set_coroutine_origin_tracking_depth(depth) -
Позволяет включить или отключить отслеживание происхождения корутин. При включенном отслеживании атрибут
cr_originобъектов корутин будет содержать кортеж кортежей (имя файла, номер строки, имя функции), описывающих трассировку, где был создан объект корутины, при этом самый последний вызов указывается первым. При отключенном отслеживанииcr_originбудет None.Для включения передайте значение depth больше нуля; это задаёт количество фреймов, информация о которых будет захвачена. Для отключения передайте depth равным нулю.
Это настройка, специфичная для потока.
Введено в версии 3.7.
Примечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей). Используйте её только для отладки.
-
sys._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 -
Множество строк, содержащих имена модулей стандартной библиотеки.
Оно одинаково на всех платформах. Также перечислены модули, недоступные на некоторых платформах, и модули, отключённые при построении Python. Перечислены все типы модулей: чисто Python, встроенные, замороженные и расширяемые модули. Модули тестов исключены.
Для пакетов перечислен только основной пакет: подпакеты и подмодули не перечислены. Например, пакет
emailперечислен, но подпакетemail.mimeи подмодульemail.messageне перечислены.См. также список
sys.builtin_module_names.Введено в версии 3.10.
-
sys.thread_info -
Именованный кортеж, содержащий информацию о реализации потоков.
-
thread_info.name -
Имя реализации потоков:
-
"nt": потоки Windows -
"pthread": потоки POSIX -
"pthread-stubs": заглушка потоков POSIX (на платформах WebAssembly без поддержки потоков) -
"solaris": потоки Solaris
-
-
thread_info.lock -
Имя реализации блокировки:
-
"semaphore": блокировка использует семафор -
"mutex+cond": блокировка использует мьютекс и переменную условия -
Noneесли эта информация неизвестна
-
-
thread_info.version -
Имя и версия библиотеки потоков. Это строка или
Noneесли эта информация неизвестна.
Введено в версии 3.3.
-
-
sys.tracebacklimit -
Когда эта переменная установлена в целое числовое значение, она определяет максимальное количество уровней отладочной информации о трассировке, печатаемых при возникновении необработанного исключения. Значение по умолчанию —
1000. При установке значения0или меньше вся отладочная информация о трассировке подавляется и печатается только тип и значение исключения.
-
sys.unraisablehook(unraisable, /) -
Обработка необрабатываемой ошибки.
Вызывается, когда произошла ошибка, но Python не может её обработать. Например, когда деструктор вызывает ошибку или во время сбора мусора (
gc.collect()).У аргумента unraisable следующие атрибуты:
-
exc_type: Тип ошибки. -
exc_value: Значение ошибки, может бытьNone. -
exc_traceback: Трассировка ошибки, может бытьNone. -
err_msg: Сообщение об ошибке, может бытьNone. -
object: Объект, вызвавший ошибку, может бытьNone.
По умолчанию обработчик форматирует
err_msgиobjectкак:f'{err_msg}: {object!r}'; использует сообщение об ошибке «Ошибка игнорирована в» еслиerr_msgявляетсяNone.sys.unraisablehook()можно переопределить, чтобы контролировать обработку необрабатываемых ошибок.См. также
excepthook(), который обрабатывает неперехваченные ошибки.Предупреждение
Хранение
exc_valueс помощью пользовательского обработчика может создать цикл ссылок. Он должен быть явно очищен, чтобы разорвать цикл ссылок, когда ошибка больше не нужна.Хранение
objectс помощью пользовательского обработчика может оживить его, если он будет установлен в объект, который завершается. Избегайте храненияobjectпосле завершения пользовательского обработчика, чтобы избежать оживления объектов.Вызывает событие аудита
sys.unraisablehookс аргументами hook, unraisable, когда возникает ошибка, которую нельзя обработать. Объект unraisable такой же, как будет передан обработчику. Если обработчик не установлен, hook может бытьNone.Добавлен в версии 3.8.
-
-
sys.version -
Строка, содержащая номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте информацию о версии из неё, а используйте
version_infoи функции, предоставляемые модулемplatform.
-
sys.api_version -
Версия C API для этого интерпретатора. Программисты могут найти это полезным при отладке конфликтов версий между Python и модулями расширений.
-
sys.version_info -
Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска это
'alpha','beta','candidate', или'final'. Значениеversion_infoсоответствующее версии Python 2.0 это(2, 0, 0, 'final', 0). Компоненты также могут быть доступны по имени, поэтомуsys.version_info[0]эквивалентноsys.version_info.majorи так далее.Изменено в версии 3.1: Добавлены атрибуты имени компонента.
-
sys.warnoptions -
Это деталь реализации фреймворка предупреждений; не изменяйте это значение. Обратитесь к модулю
warningsдля получения дополнительной информации о фреймворке предупреждений.
-
sys.winver -
Номер версии, используемый для формирования ключей реестра на платформах Windows. Это хранится как строковый ресурс 1000 в DLL Python. Значение обычно является основными и второстепенными версиями работающего интерпретатора Python. Он предоставляется в модуле
sysдля информационных целей; изменение этого значения не влияет на ключи реестра, используемые Python.Доступность: Windows.
-
sys._xoptions -
Словарь различных флагов, специфичных для реализации, переданных через параметр командной строки
-X. Имена параметров либо отображаются на их значения, если они заданы явно, либо наTrue. Пример:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}Деталь реализации CPython: Это CPython-специфический способ доступа к параметрам, переданным через параметр командной строки
-X. Другие реализации могут экспортировать их другими способами или не экспортировать вообще.Добавлен в версии 3.2.
Список литературы
-
C99 -
ISO/IEC 9899:1999. «Языки программирования – C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/sys.html