sys — Параметры и функции, специфичные для системы
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, и к функциям, которые тесно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.abiflags -
В системах POSIX, где Python был построен с использованием стандартного
configureскрипта, это содержит флаги ABI, как указано в PEP 3149.Изменено в версии 3.8: Значения по умолчанию стали пустой строкой (
mфлаг для pymalloc был удален).Добавлена в версии 3.2.
-
sys.addaudithook(hook) -
Добавляет вызываемый объект hook в список активных аудиторных хуков для текущего (под)интерпретатора.
Когда событие аудита поднимается с помощью функции
sys.audit(), каждый хук вызывается в порядке его добавления, с именем события и кортежем аргументов. Нативные хуки, добавленные с помощьюPySys_AddAuditHook(), вызываются первыми, за которыми следуют хуки, добавленные в текущем (под)интерпретаторе. Затем хуки могут регистрировать событие, вызвать исключение для прерывания операции или полностью завершить процесс.Обратите внимание, что аудиторные хуки предназначены в первую очередь для сбора информации об внутренних или иным образом не наблюдаемых действиях, как Python, так и библиотек, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может тривиально отключить или обойти хуки, добавленные с помощью этой функции. Как минимум, все хуки, связанные с безопасностью, должны быть добавлены с использованием API C
PySys_AddAuditHook()до инициализации выполнения, а любые модули, позволяющие произвольное изменение памяти (например,ctypes) должны быть полностью удалены или тщательно отслеживаться.Вызов
sys.addaudithook()сам по себе вызывает событие аудита под названиемsys.addaudithookбез аргументов. Если какой-либо существующий хук вызывает исключение, производное отRuntimeError, новый хук не будет добавлен, а исключение подавлено. В результате, вызывающие стороны не могут быть уверены, что их хук был добавлен, если они не контролируют все существующие хуки.См. таблицу событий аудита для всех событий, генерируемых CPython, и PEP 578 для исходного обсуждения дизайна.
Добавлена в версии 3.8.
Изменено в версии 3.8.1: Исключения, производные от
Exception, но не отRuntimeError, больше не подавляются.Подробность реализации CPython: Когда отслеживание включено (см.
settrace()), хуки Python отслеживаются только если у вызываемого объекта есть член__cantrace__, установленный в истинное значение. В противном случае функции отслеживания пропустят хук.
-
sys.argv -
Список аргументов командной строки, переданных скрипту Python.
argv[0]— имя скрипта (зависит от операционной системы, будет ли это полное имя пути или нет). Если команда была выполнена с помощью опции командной строки-cинтерпретатора,argv[0]установлено в строку'-c'. Если имя скрипта не было передано интерпретатору Python, тоargv[0]— пустая строка.Чтобы пройтись по стандартному вводу или списку файлов, указанных в командной строке, обратитесь к модулю
fileinput.См. также
sys.orig_argv.Примечание
В Unix аргументы командной строки передаются в виде байтов от ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок «surrogateescape». Если вам нужны исходные байты, вы можете получить их с помощью
[os.fsencode(arg) for arg in sys.argv].
-
sys.audit(event, *args) -
Вызывает событие аудита и запускает все активные аудиторные хуки. event — строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются общедоступным и стабильным API и не должны изменяться между выпусками.
Например, одно событие аудита называется
os.chdir. Это событие имеет один аргумент под названием path, который будет содержать запрашиваемый новый рабочий каталог.sys.audit()вызовет существующие аудиторные хуки, передавая имя события и аргументы, и повторно поднимет первое исключение от любого хука. В общем случае, если исключение возникает, его не нужно обрабатывать, а процесс должен быть завершен как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто регистрировать событие или прервать операцию, вызвав исключение.Хуки добавляются с помощью функций
sys.addaudithook()илиPySys_AddAuditHook().Нативный эквивалент этой функции —
PySys_Audit(). Использование нативной функции предпочтительнее, когда это возможно.См. таблицу событий аудита для всех событий, генерируемых CPython.
Добавлена в версии 3.8.
-
sys.base_exec_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, равным значениюexec_prefix. Если выполнение не происходит в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаруживает использование виртуальной среды, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся указателями на базовую установку Python (из которой была создана виртуальная среда).Добавлена в версии 3.3.
-
sys.base_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, равным значениюprefix. Если выполнение не происходит в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаруживает использование виртуальной среды, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся указателями на базовую установку Python (из которой была создана виртуальная среда).Добавлена в версии 3.3.
-
sys.byteorder -
Индикатор родного порядка байтов. Он будет иметь значение
'big'на платформах с big-endian (сначала самый значимый байт) и'little'на платформах с little-endian (сначала наименее значимый байт).
-
sys.builtin_module_names -
Кортеж строк, содержащих имена всех модулей, скомпилированных в интерпретатор Python. (Эта информация недоступна каким-либо другим способом —
modules.keys()показывает только импортированные модули.)См. также список
sys.stdlib_module_names.
-
sys.call_tracing(func, args) -
Вызывает
func(*args), в то время как отслеживание включено. Состояние отслеживания сохраняется и восстанавливается после этого. Это предназначено для вызова отладчиком из контрольной точки для рекурсивной отладки другого кода.
-
sys.copyright -
Строка, содержащая авторские права, относящиеся к интерпретатору Python.
-
sys._clear_type_cache() -
Очистить внутренний кэш типов. Кэш типов используется для ускорения поиска атрибутов и методов. Используйте функцию *только* для удаления ненужных ссылок при отладке утечек ссылок.
Эта функция должна использоваться только для внутренних и специализированных целей.
-
sys._current_frames() -
Возвращает словарь, сопоставляющий идентификатор каждого потока с самым верхним кадровым элементом стека, активным в этом потоке в момент вызова функции. Обратите внимание, что функции в модуле
tracebackмогут построить стек вызовов, исходя из такого кадра.Это наиболее полезно для отладки тупиков: эта функция не требует сотрудничества заблокированных потоков, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются заблокированными. Кадр, возвращаемый для незаблокированного потока, может не иметь отношения к текущей активности этого потока к тому моменту, когда вызывающий код исследует кадр.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает событие аудита
sys._current_framesбез аргументов.
-
sys._current_exceptions() -
Возвращает словарь, сопоставляющий идентификатор каждого потока с самым верхним исключением, активным в этом потоке в момент вызова функции. Если поток в данный момент не обрабатывает исключение, он не включается в результирующий словарь.
Это наиболее полезно для статистического профилирования.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает событие аудита
sys._current_exceptionsбез аргументов.
-
sys.breakpointhook() -
Эта функция-обработчик вызывается встроенной функцией
breakpoint(). По умолчанию она запускает отладчикpdb, но её можно установить на любую другую функцию, чтобы выбрать нужный отладчик.Подпись этой функции зависит от того, что она вызывает. Например, стандартная привязка (например,
pdb.set_trace()) не ожидает аргументов, но вы можете привязать её к функции, ожидающей дополнительные аргументы (позиционные и/или ключевые). Встроенная функцияbreakpoint()передает свои*argsи**kwsнапрямую. То, что возвращаетbreakpointhooks(), возвращается изbreakpoint().По умолчанию сначала проверяется переменная окружения
PYTHONBREAKPOINT. Если она установлена в"0", эта функция возвращается сразу; то есть это функция-заглушка. Если переменная окружения не установлена или установлена в пустую строку, вызываетсяpdb.set_trace(). В противном случае эта переменная должна указывать на функцию для выполнения, используя обозначения импорта Python, например,package.subpackage.module.function. В этом случаеpackage.subpackage.moduleбудет импортирован, и полученный модуль должен содержать вызываемую функцию под именемfunction(). Эта функция вызывается, передавая ей*argsи**kws, а то, что возвращаетfunction(), возвращаетсяsys.breakpointhook()в функцию встроенного языкаbreakpoint().Обратите внимание, что если при импорте вызываемой функции, указанной в
PYTHONBREAKPOINT, возникнут проблемы, будет сообщено предупреждениеRuntimeWarning, и точка останова будет проигнорирована.Также обратите внимание, что если
sys.breakpointhook()переопределяется программно,PYTHONBREAKPOINTне проверяется.Введено в версии 3.7.
-
sys._debugmallocstats() -
Выводит информацию низкого уровня в stderr о состоянии распределения памяти CPython.
Если Python был скомпилирован в отладочном режиме (
configure --with-pydebug option), он также выполняет некоторые дорогостоящие проверки внутренней согласованности.Введено в версии 3.3.
Подробность реализации CPython: Эта функция специфична для CPython. Точный формат вывода здесь не определён и может изменяться.
-
sys.dllhandle -
Целое число, определяющее дескриптор DLL Python.
Доступность: Windows.
-
sys.displayhook(value) -
Если value не
None, эта функция выводитrepr(value)вsys.stdoutи сохраняет value вbuiltins._. Еслиrepr(value)нельзя закодировать вsys.stdout.encodingс обработчиком ошибокsys.stdout.errors(что, вероятно,'strict'), закодируйте его вsys.stdout.encodingс обработчиком ошибок'backslashreplace'.Эта функция вызывается при отображении результата вычисления выражения, введённого в интерактивной сессии Python. Отображение этих значений можно настроить, назначив другую одноаргументную функцию объекту
sys.displayhook.Псевдокод:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = valueИзменено в версии 3.2: Используйте обработчик ошибок
'backslashreplace'дляUnicodeEncodeError.
-
sys.dont_write_bytecode -
Если это True, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это значение изначально устанавливается вTrueилиFalseв зависимости от опции командной строки-Bи переменной окруженияPYTHONDONTWRITEBYTECODE, но вы можете установить его самостоятельно, чтобы управлять генерацией файлов байткода.
-
sys.pycache_prefix -
Если это установлено (не
None), Python будет записывать файлы кэша байткода.pycв (и читать из) параллельной древовидной структуры каталогов, корневой каталог которой указан в этой переменной, а не из каталогов__pycache__в структуре каталогов исходного кода. Любые каталоги__pycache__в структуре каталогов исходного кода будут проигнорированы, и новые файлы.pycбудут созданы в префиксе pycache. Таким образом, если вы используетеcompileallв качестве предварительной стадии сборки, вам нужно убедиться, что вы запускаете его с тем же префиксом pycache (если таковой имеется), который вы будете использовать во время выполнения.Относительный путь интерпретируется относительно текущей рабочей директории.
Это значение изначально устанавливается на основе значения опции командной строки
-Xpycache_prefix=PATHили переменной окруженияPYTHONPYCACHEPREFIX(командная строка имеет приоритет). Если ни то, ни другое не установлено, оно равноNone.Введено в версии 3.8.
-
sys.excepthook(type, value, traceback) -
Эта функция выводит заданную трассировку стека и исключение в
sys.stderr.Когда возникает исключение и не обрабатывается, интерпретатор вызывает
sys.excepthookс тремя аргументами: классом исключения, экземпляром исключения и объектом трассировки. В интерактивной сессии это происходит перед возвратом управления в приглашение; в программе Python это происходит перед завершением программы. Обработку таких исключений верхнего уровня можно настроить, назначив другую функцию с тремя аргументами объектуsys.excepthook.Вызывает событие аудита
sys.excepthookс аргументамиhook,type,value,tracebackпри возникновении необработанного исключения. Если обработчик не установлен,hookможет бытьNone. Если любой обработчик вызывает исключение, производное отRuntimeError, вызов обработчика будет подавлен. В противном случае исключение обработчика аудита будет представлено как неподъёмное, и будет вызваноsys.excepthook.См. также
Функция
sys.unraisablehook()обрабатывает неподъёмные исключения, а функцияthreading.excepthook()обрабатывает исключения, возникающие вthreading.Thread.run().
-
sys.__breakpointhook__ -
sys.__displayhook__ -
sys.__excepthook__ -
sys.__unraisablehook__ -
Эти объекты содержат исходные значения
breakpointhook,displayhook,excepthookиunraisablehookв начале программы. Они сохраняются, чтобыbreakpointhook,displayhookиexcepthook,unraisablehookмогли быть восстановлены, если они заменены сломанными или альтернативными объектами.Введено в версии 3.7: __breakpointhook__
Введено в версии 3.8: __unraisablehook__
-
sys.exc_info() -
Эта функция возвращает кортеж из трех значений, содержащих информацию об исключении, которое в данный момент обрабатывается. Возвращаемая информация специфична как для текущего потока, так и для текущей области стека. Если текущая область стека не обрабатывает исключение, информация берется из вызывающей области стека, или из ее вызывающей области, и так далее, пока не будет найдена область стека, обрабатывающая исключение. Здесь «обработка исключения» определена как «выполнение блока except».
Для любой области стека доступна только информация об исключении, которое в данный момент обрабатывается.
Если ни одно исключение не обрабатывается ни в одной области стека, возвращается кортеж, содержащий три
Noneзначения. В противном случае возвращаемые значения(type, value, traceback). Их значение таково: type получает тип обрабатываемого исключения (подклассBaseException); value получает экземпляр исключения (экземпляр типа исключения); traceback получает объект обработки исключений, который содержит стек вызовов в тот момент, когда произошло исключение.
-
sys.exec_prefix -
Строка, определяющая префикс каталога, специфичный для сайта, где установлены платформозависимые файлы Python; по умолчанию это также
'/usr/local'. Это может быть задано во время сборки с аргументом--exec-prefixскрипта configure. В частности, все файлы конфигурации (например, заголовочный файлpyconfig.h) устанавливаются в каталогеexec_prefix/lib/pythonX.Y/config, а модули общих библиотек устанавливаются вexec_prefix/lib/pythonX.Y/lib-dynload, где X.Y — номер версии Python, например3.2.Примечание
Если виртуальная среда виртуальная среда активна, это значение будет изменено в
site.py, чтобы указывать на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_exec_prefix.
-
sys.executable -
Строка, содержащая абсолютный путь к исполняемому бинарному файлу интерпретатора Python на системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу,
sys.executableбудет пустой строкой илиNone.
-
sys.exit([arg]) -
Вызвать исключение
SystemExit, сигнализируя об намерении выйти из интерпретатора.Необязательный аргумент arg может быть целым числом, задающим код выхода (по умолчанию ноль), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «аномальным завершением» оболочками и тому подобным. Большинство систем требуют, чтобы оно находилось в диапазоне от 0 до 127, в противном случае результаты будут неопределенными. Некоторые системы имеют соглашение для присвоения определенных значений определенным кодам выхода, но эти соглашения обычно слабо разработаны; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех других типов ошибок. Если передается объект другого типа,
Noneэквивалентно передаче нуля, а любой другой объект выводится вstderrи приводит к коду выхода 1. В частности,sys.exit("some error message")— быстрый способ завершить программу при возникновении ошибки.Поскольку
exit()в конечном итоге «только» вызывает исключение, он будет завершать процесс только при вызове из основного потока, и исключение не перехватывается. Действия очистки, указанные в блоках finally вtry, выполняются, и есть возможность перехватить попытку выхода на внешнем уровне.Изменено в версии 3.6: Если при очистке после того, как интерпретатор Python поймал
SystemExit(например, при ошибке сброса буферизированных данных в стандартных потоках), происходит ошибка, код выхода изменяется на 120.
-
sys.flags -
Именованный кортеж flags предоставляет состояние флагов командной строки. Атрибуты только для чтения.
атрибут
флаг
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 -
A именованный кортеж содержащий информацию о типе 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_DIGмаксимальное количество десятичных цифр, которые могут быть надежно представлены в float; см. ниже
mant_digDBL_MANT_DIGточность float: количество цифр в системе с основанием
radixв мантиссе floatmaxDBL_MAXмаксимальное представимое положительное конечное float
max_expDBL_MAX_EXPмаксимальное целое число e, такое что
radix**(e-1)— представимое конечное floatmax_10_expDBL_MAX_10_EXPмаксимальное целое число e, такое что
10**eнаходится в диапазоне представимых конечных floatminDBL_MINминимальное представимое положительное нормализованное float
Используйте
math.ulp(0.0)для получения наименьшего положительного денармализованного представимого float.min_expDBL_MIN_EXPминимальное целое число e, такое что
radix**(e-1)— нормализованное floatmin_10_expDBL_MIN_10_EXPминимальное целое число e, такое что
10**e— нормализованное floatradixFLT_RADIXоснование представления показателя
roundsFLT_ROUNDSцелое число, представляющее режим округления для арифметики с плавающей запятой. Это отражает значение системы
FLT_ROUNDSмакроса во время запуска интерпретатора:-1неопределённое,0к нулю,1к ближайшему,2к положительной бесконечности,3к отрицательной бесконечностиВсе другие значения для
FLT_ROUNDSхарактеризуют поведение округления, определенное реализацией.Атрибут
sys.float_info.digтребует дальнейшего объяснения. Еслиs— любая строка, представляющая десятичное число с не более чемsys.float_info.digзначащими цифрами, то преобразованиеsв float и обратно восстановит строку, представляющую то же десятичное значение:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # decimal string with 15 significant digits >>> format(float(s), '.15g') # convert to float and back -> same value '3.14159265358979'
Но для строк с более чем
sys.float_info.digзначащими цифрами это не всегда верно:>>> s = '9876543211234567' # 16 significant digits is too many! >>> format(float(s), '.16g') # conversion changes value '9876543211234568'
-
sys.float_repr_style -
Строка, указывающая, как ведет себя функция
repr()для чисел с плавающей запятой. Если строка имеет значение'short', то для конечного 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', если включен режим Python UTF-8.
-
sys.getfilesystemencodeerrors() -
Получить обработчик ошибок обработки ошибок файловой системы: обработчик ошибок, используемый с кодировкой файловой системы для преобразования между именами файлов Unicode и именами файлов в байтах. Кодировка файловой системы возвращается функцией
getfilesystemencoding().os.fsencode()иos.fsdecode()должны использоваться для обеспечения правильной кодировки и режима обработки ошибок.Кодировка и обработчик ошибок файловой системы настраиваются при запуске Python функцией
PyConfig_Read(): см. членыPyConfig, а именноfilesystem_encodingиfilesystem_errors.Введено в версии 3.6.
-
sys.get_int_max_str_digits() -
Возвращает текущее значение ограничения длины строки при преобразовании целых чисел в строку (ограничение длины строки преобразования целых чисел). Также см.
set_int_max_str_digits().Введено в версии 3.10.7.
-
sys.getrefcount(object) -
Возвращает счётчик ссылок на объект object. Возвращаемое значение обычно на единицу больше ожидаемого, так как оно включает (временную) ссылку в качестве аргумента функции
getrefcount().Обратите внимание, что возвращаемое значение может не отражать фактическое количество ссылок на объект. Поэтому не полагайтесь на точность возвращаемого значения, кроме случаев, когда оно равно 0 или 1.
-
sys.getrecursionlimit() -
Возвращает текущее значение ограничения рекурсии, максимальную глубину стека интерпретатора Python. Это ограничение предотвращает бесконечную рекурсию, которая может привести к переполнению стека C и аварийному завершению работы Python. Его можно установить с помощью
setrecursionlimit().
-
sys.getsizeof(object[, default]) -
Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты вернут корректные результаты, но это не обязательно справедливо для расширений сторонних производителей, так как это зависит от реализации.
Учитывается только потребление памяти, непосредственно связанное с объектом, а не потребление памяти объектов, на которые он ссылается.
Если задано default, будет возвращено default, если объект не предоставляет способ получения размера. В противном случае будет возбуждено исключение
TypeError.getsizeof()вызывает метод__sizeof__объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.См. рецепт рекурсивного определения размера для примера использования
getsizeof()рекурсивно для нахождения размера контейнеров и всех их содержимых.
-
sys.getswitchinterval() -
Возвращает интервал переключения потоков интерпретатора; см.
setswitchinterval().Введено в версии 3.2.
-
sys._getframe([depth]) -
Возвращает объект кадра из стека вызовов. Если задан необязательный целочисленный аргумент depth, возвращает объект кадра, находящийся на глубине depth ниже вершины стека. Если эта глубина больше глубины стека вызовов, возбуждается исключение
ValueError. Значение по умолчанию для depth равно нулю, возвращая кадр на вершине стека вызовов.Возбуждает событие аудита
sys._getframeбез аргументов.Деталь реализации CPython: Эта функция должна использоваться только для внутренних и специализированных целей. Она не гарантируется в всех реализациях Python.
-
sys.getprofile() -
Получить функцию профилирования, заданную функцией
setprofile().
-
sys.gettrace() -
Получить функцию отслеживания, заданную функцией
settrace().Деталь реализации CPython: Функция
gettrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, и поэтому может быть недоступна во всех реализациях Python.
-
sys.getwindowsversion() -
Возвращает кортеж с именем, описывающий текущую версию Windows. Имена элементов: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version — кортеж из 3 элементов, а все остальные значения — целые числа. К компонентам также можно обратиться по имени, поэтому
sys.getwindowsversion()[0]эквивалентноsys.getwindowsversion().major. Для совместимости с предыдущими версиями доступны только первые 5 элементов по индексации.platform будет
2 (VER_PLATFORM_WIN32_NT).product_type может иметь одно из следующих значений:
Константа
Значение
1 (VER_NT_WORKSTATION)Система — рабочая станция.
2 (VER_NT_DOMAIN_CONTROLLER)Система — контроллер домена.
3 (VER_NT_SERVER)Система — сервер, но не контроллер домена.
Эта функция оборачивает функцию Win32
GetVersionEx(); см. документацию Microsoft поOSVERSIONINFOEX()для получения дополнительной информации об этих полях.platform_version возвращает главную, второстепенную версии и номер сборки текущей операционной системы, а не версию, которая эмулируется для процесса. Она предназначена для использования в ведении журнала, а не для обнаружения функций.
Примечание
platform_version получает версию из kernel32.dll, которая может иметь другую версию, чем версия ОС. Для получения точной версии ОС используйте модуль
platform.Доступность: Windows.
Изменено в версии 3.2: Изменено на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
Изменено в версии 3.6: Добавлен platform_version
-
sys.get_asyncgen_hooks() -
Возвращает объект asyncgen_hooks, похожий на
namedtupleв форме(firstiter, finalizer), где firstiter и finalizer ожидаются какNoneили функции, принимающие итератор асинхронного генератора в качестве аргумента и используются для планирования завершения работы асинхронного генератора с помощью цикла событий.Введено в версии 3.6: См. PEP 525 для получения более подробной информации.
Примечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей).
-
sys.get_coroutine_origin_tracking_depth() -
Возвращает текущую глубину отслеживания происхождения корутин, установленную функцией
set_coroutine_origin_tracking_depth().Введено в версии 3.7.
Примечание
Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей). Используйте ее только для целей отладки.
-
sys.hash_info -
Кортеж со списком параметров реализации численного хеширования. Для более подробной информации о хешировании числовых типов, см. Хеширование числовых типов.
атрибут
объяснение
widthширина в битах, используемая для значений хеша
modulusпростой модуль P, используемый для числовой схемы хеширования
infзначение хеша, возвращаемое для положительной бесконечности
nan(Этот атрибут больше не используется)
imagмножитель, используемый для мнимой части комплексного числа
algorithmназвание алгоритма для хеширования str, bytes и memoryview
hash_bitsвнутренний размер вывода алгоритма хеширования
seed_bitsразмер ключевого значения для начального состояния алгоритма хеширования
Введено в версии 3.2.
Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits
-
sys.hexversion -
Номер версии, закодированный в виде целого числа. Гарантируется, что он будет увеличиваться с каждой версией, включая надлежащую поддержку непроизводственных релизов. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 1.5.2, используйте:
if sys.hexversion >= 0x010502F0: # use some advanced feature ... else: # use an alternative implementation or warn the user ...Это называется
hexversion, так как оно действительно приобретает осмысленный вид только при применении к встроенной функцииhex(). Кортеж named 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 -
Кортеж, содержащий информацию о внутренней представлении целых чисел в 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 -
Целое число, задающее значение наибольшего кода Юникода, т.е.
1114111(0x10FFFFв шестнадцатеричной системе счисления).Изменено в версии 3.3: До PEP 393,
sys.maxunicodeиспользовалось либо0xFFFF, либо0x10FFFF, в зависимости от конфигурационного параметра, который определял, хранятся ли символы Юникода как UCS-2 или UCS-4.
-
sys.meta_path -
Список объектов находок метапути, у которых вызываются методы
find_spec(), чтобы проверить, может ли один из объектов найти импортируемый модуль. По умолчанию он содержит записи, реализующие стандартную семантику импорта Python. Методfind_spec()вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то атрибут__path__родительского пакета передаётся в качестве второго аргумента. Метод возвращает спецификацию модуля илиNone, если модуль не найден.См. также
-
importlib.abc.MetaPathFinder -
Абстрактный базовый класс, определяющий интерфейс объектов находок для
meta_path. -
importlib.machinery.ModuleSpec -
Конкретный класс, экземпляры которого должен возвращать метод
find_spec().
Изменено в версии 3.4: Спецификации модулей были введены в Python 3.4, с помощью PEP 451. В более ранних версиях Python искался метод с именем
find_module(). Он всё ещё вызывается как резервный вариант, если у записи вmeta_pathотсутствует методfind_spec(). -
-
sys.modules -
Это словарь, который сопоставляет имена модулей уже загруженным модулям. Его можно изменить, чтобы принудительно перегрузить модули и другие трюки. Однако замена словаря необязательно будет работать так, как ожидается, и удаление существенных элементов из словаря может привести к сбою Python. Если вы хотите итерироваться по этому глобальному словарю, всегда используйте
sys.modules.copy()илиtuple(sys.modules), чтобы избежать исключений, поскольку его размер может измениться во время итерации как побочный эффект кода или активности в других потоках.
-
sys.orig_argv -
Список исходных аргументов командной строки, переданных исполняемому файлу Python.
См. также
sys.argv.Введено в версии 3.10.
-
sys.path -
Список строк, определяющий путь поиска модулей. Инициализируется из переменной окружения
PYTHONPATH, плюс зависимая от установки по умолчанию.При инициализации при запуске программы первым элементом этого списка,
path[0], является каталог, содержащий скрипт, который использовался для вызова интерпретатора Python. Если каталог скрипта недоступен (например, если интерпретатор вызывается интерактивно или если скрипт читается из стандартного ввода),path[0]— это пустая строка, которая заставляет Python сначала искать модули в текущем каталоге. Обратите внимание, что каталог скрипта вставляется перед записями, добавленными в результатеPYTHONPATH.Программа свободна изменять этот список по своему усмотрению. В
sys.pathследует добавлять только строки и байты; все другие типы данных игнорируются во время импорта.
-
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...Для других систем значения следующие:
Система
Значение
platformAIX
'aix'Linux
'linux'Windows
'win32'Windows/Cygwin
'cygwin'macOS
'darwin'Изменено в версии 3.3: В Linux,
sys.platformбольше не содержит номер основной версии. Он всегда равен'linux', вместо'linux2'или'linux3'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать фрагмент кодаstartswith, представленный выше.Изменено в версии 3.8: В AIX,
sys.platformбольше не содержит номер основной версии. Он всегда равен'aix', вместо'aix5'или'aix7'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать фрагмент кодаstartswith, представленный выше.См. также
os.nameимеет более грубую гранулярность.os.uname()предоставляет информацию о версии системы, зависящую от неё.Модуль
platformпредоставляет подробные проверки идентичности системы.
-
sys.platlibdir -
Имя каталога платформ-специфической библиотеки. Используется для построения пути к стандартной библиотеке и путях установленных модулей расширений.
На большинстве платформ он равен
"lib". На Fedora и SuSE он равен"lib64"на 64-битных платформах, что даёт следующиеsys.pathпути (гдеX.Y— версия 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 -
Замороженный набор строк, содержащих имена модулей стандартной библиотеки.
Он одинаков на всех платформах. Также перечислены модули, недоступные на некоторых платформах, и модули, отключенные при сборке 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. «Языки программирования — C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/sys.html