sys — Параметры и функции, специфичные для системы
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, которые тесно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.abiflags -
В системах POSIX, где Python был скомпилирован со стандартным
configureскриптом, эта переменная содержит флаги ABI, как указано в PEP 3149.Изменено в версии 3.8: Значение по умолчанию стало пустой строкой (флаг
mдля pymalloc был удален).Добавлена в версии 3.2.
-
sys.addaudithook(hook) -
Добавляет вызываемый объект hook в список активных аудиторных хуков для текущего (под)интерпретатора.
Когда аудиторное событие возбуждается через функцию
sys.audit(), каждый хук вызывается в порядке его добавления с именем события и кортежем аргументов. Встроенные хуки, добавленные функциейPySys_AddAuditHook(), вызываются первыми, за ними следуют хуки, добавленные в текущем (под)интерпретаторе. Хуки могут регистрировать событие, возбуждать исключение для прерывания операции или полностью завершать процесс.Вызов
sys.addaudithook()сам по себе возбуждает аудиторное событие с именемsys.addaudithookбез аргументов. Если любой из существующих хуков возбуждает исключение, являющееся подклассомRuntimeError, новый хук не будет добавлен, а исключение будет подавлено. В результате, вызывающие стороны не могут гарантировать, что их хук был добавлен, пока не контролируют все существующие хуки.См. таблицу аудиторных событий для всех событий, возбуждаемых CPython, и PEP 578 для обсуждения исходного дизайна.
Добавлена в версии 3.8.
Изменено в версии 3.8.1: Исключения, являющиеся подклассами
Exception, но неRuntimeError, больше не подавляются.Деталь реализации CPython: Когда отслеживание включено (см.
settrace()), Python хуки отслеживаются только если у вызываемого объекта есть член__cantrace__, установленный в истинное значение. В противном случае функции отслеживания пропустят хук.
-
sys.argv -
Список аргументов командной строки, переданных скрипту Python.
argv[0]— имя скрипта (зависит от операционной системы, является ли это полным путем или нет). Если интерпретатор был запущен с опцией командной строки-c,argv[0]устанавливается в строку'-c'. Если скрипт не был передан интерпретатору Python,argv[0]— пустая строка.Для перебора стандартного ввода или списка файлов, переданных в командной строке, см. модуль
fileinput.Примечание
В Unix аргументы командной строки передаются в виде байтов от ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок “surrogateescape”. Если вам нужны исходные байты, вы можете получить их, используя
[os.fsencode(arg) for arg in sys.argv].
-
sys.audit(event, *args) -
Возбуждает аудиторное событие и запускает все активные аудиторные хуки. event — строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события являются частью стабильного API и не должны изменяться между версиями.
Например, одно аудиторное событие называется
os.chdir. У этого события есть один аргумент под названием path, который будет содержать запрашиваемый новый рабочий каталог.sys.audit()вызовет существующие аудиторные хуки, передавая им имя события и аргументы, и повторно возбудит первое исключение от любого хука. В общем случае, если возбуждается исключение, его не нужно обрабатывать, и процесс следует завершить как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто регистрировать событие или прервать операцию, возбудив исключение.Добавление хуков происходит с помощью функций
sys.addaudithook()илиPySys_AddAuditHook().Встроенный аналог этой функции —
PySys_Audit(). При возможности предпочтительнее использовать встроенную функцию.См. таблицу аудиторных событий для всех событий, возбуждаемых CPython.
Добавлена в версии 3.8.
-
sys.base_exec_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, в такое же значение, какexec_prefix. Если выполнение не происходит в виртуальной среде, значения останутся прежними; еслиsite.pyобнаружит использование виртуальной среды, значенияprefixиexec_prefixбудут изменены на указание на виртуальную среду, в то время какbase_prefixиbase_exec_prefixсохранят указание на базовую установку Python (ту, из которой была создана виртуальная среда).Добавлена в версии 3.3.
-
sys.base_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, в такое же значение, какprefix. Если выполнение не происходит в виртуальной среде, значения останутся прежними; еслиsite.pyобнаружит использование виртуальной среды, значенияprefixиexec_prefixбудут изменены на указание на виртуальную среду, в то время какbase_prefixиbase_exec_prefixсохранят указание на базовую установку Python (ту, из которой была создана виртуальная среда).Добавлена в версии 3.3.
-
sys.byteorder -
Указатель родного порядка байтов. Будет иметь значение
'big'на платформах с big-endian (старший байт первым), и'little'на платформах с little-endian (младший байт первым).
-
sys.builtin_module_names -
Кортеж строк, содержащий имена всех модулей, скомпилированных в этот интерпретатор Python. (Эта информация недоступна другими способами —
modules.keys()перечисляет только импортированные модули.)
-
sys.call_tracing(func, args) -
Вызывает
func(*args), когда отслеживание включено. Состояние отслеживания сохраняется и восстанавливается после этого. Это предназначено для использования отладчиком с контрольной точки для рекурсивной отладки другого кода.
-
sys.copyright -
Строка, содержащая копирайт интерпретатора Python.
-
sys._clear_type_cache() -
Очистить внутренний кеш типов. Кеш типов используется для ускорения поиска атрибутов и методов. Используйте функцию *только* для удаления ненужных ссылок во время отладки утечек памяти.
Эта функция должна использоваться только для внутренних и специализированных целей.
-
sys._current_frames() -
Возвращает словарь, сопоставляющий идентификатор каждого потока с самым верхним кадром стека, который в данный момент активен в этом потоке в момент вызова функции. Обратите внимание, что функции из модуля
tracebackмогут создать стек вызовов, используя такой кадр.Это наиболее полезно для отладки тупиков: эта функция не требует сотрудничества заблокированных потоков, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются в тупике. Кадр, возвращаемый для не заблокированного потока, может не иметь отношения к текущей активности этого потока к моменту, когда вызывающий код изучает кадр.
Эта функция должна использоваться только для внутренних и специализированных целей.
Возбуждает аудиторное событие
sys._current_framesбез аргументов.
-
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 сконфигурирован с –with-pydebug, он также выполняет некоторые дорогостоящие внутренние проверки непротиворечивости.
Новая в версии 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'.Эта функция вызывается при отображении результата вычисления выражения, введённого в интерактивной сессии 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.9.14: Добавлен атрибут
int_max_str_digits.
-
sys.float_info -
Кортеж с именованными полями, содержащий информацию о типе float. Он содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определённым в стандартном заголовочном файле
float.hдля языка программирования «C»; см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], «Характеристики типов с плавающей запятой», для подробностей.атрибут
макрос float.h
объяснение
epsilonDBL_EPSILON
разница между 1,0 и наименьшим значением, большим 1,0, которое может быть представлено как float
См. также
math.ulp().digDBL_DIG
максимальное количество десятичных цифр, которые могут быть верно представлены в float; см. ниже
mant_digDBL_MANT_DIG
точность float: количество цифр в основании
radixв мантиссе floatDBL_MAX
максимальное представимое положительное конечное float
max_expDBL_MAX_EXP
максимальное целое число e такое, что
radix**(e-1)является представимым конечным floatmax_10_expDBL_MAX_10_EXP
максимальное целое число e такое, что
10**eнаходится в диапазоне представимых конечных floatDBL_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 во время запуска интерпретатора. См. раздел 5.2.4.2.2 стандарта C99 для объяснения возможных значений и их значений.
Атрибуту
sys.float_info.digтребуется дополнительное объяснение. Еслиs— это любая строка, представляющая десятичное число с не более чемsys.float_info.digзначащими цифрами, то преобразованиеsв float и обратно восстановит строку, представляющую то же десятичное значение:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # 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 и именами файлов в байтах. Для наилучшей совместимости str следует использовать для имён файлов во всех случаях, хотя представление имён файлов в виде байтов также поддерживается. Функции, принимающие или возвращающие имена файлов, должны поддерживать как str, так и bytes и внутренне преобразовывать в предпочтительное представление системы.
Это кодирование всегда совместимо с ASCII.
os.fsencode()иos.fsdecode()следует использовать, чтобы гарантировать, что используется правильное кодирование и режим ошибок.- В режиме UTF-8 кодирование равно
utf-8на любой платформе. - На macOS кодирование равно
'utf-8'. - На Unix кодирование равно кодировке локали.
- На Windows кодирование может быть
'utf-8'или'mbcs', в зависимости от пользовательской настройки. - На Android кодирование равно
'utf-8'. - На VxWorks кодирование равно
'utf-8'.
Изменено в версии 3.2:
getfilesystemencoding()результат больше не может бытьNone.Изменено в версии 3.6: Windows больше не гарантирует возврат
'mbcs'. См. PEP 529 и_enablelegacywindowsfsencoding()для получения дополнительной информации.Изменено в версии 3.7: Возвращается ‘utf-8’ в режиме UTF-8.
- В режиме UTF-8 кодирование равно
-
sys.getfilesystemencodeerrors() -
Возвращает имя режима ошибок, используемого для преобразования между именами файлов Unicode и именами файлов в байтах. Имя кодирования возвращается из
getfilesystemencoding().os.fsencode()иos.fsdecode()следует использовать, чтобы гарантировать, что используется правильное кодирование и режим ошибок.Добавлена в версии 3.6.
-
sys.get_int_max_str_digits() -
Возвращает текущее значение ограничения длины строк для преобразования целых чисел. См. также
set_int_max_str_digits().Добавлена в версии 3.9.14.
-
sys.getrefcount(object) -
Возвращает счётчик ссылок на объект. Возвращаемое значение обычно на единицу больше ожидаемого, потому что оно включает (временную) ссылку в качестве аргумента к
getrefcount().
-
sys.getrecursionlimit() -
Возвращает текущее значение предела рекурсии — максимальную глубину стека интерпретатора Python. Это ограничение предотвращает бесконечную рекурсию, которая может вызвать переполнение стека C и сбой Python. Его можно установить с помощью
setrecursionlimit().
-
sys.getsizeof(object[, default]) -
Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты вернут правильные результаты, но это не обязательно верно для расширений сторонних разработчиков, так как это зависит от реализации.
Учитывается только потребление памяти, напрямую связанное с объектом, а не потребление памяти объектов, на которые он ссылается.
Если задано, default будет возвращено, если объект не предоставляет способ извлечения размера. В противном случае будет поднято исключение
TypeError.getsizeof()вызывает метод объекта__sizeof__и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.См. рецепты рекурсивного sizeof для примера использования
getsizeof()рекурсивно для определения размера контейнеров и всех их содержимых.
-
sys.getswitchinterval() -
Возвращает интервал переключения потоков интерпретатора; см.
setswitchinterval().Новая в версии 3.2.
-
sys._getframe([depth]) -
Возвращает объект кадра из стека вызовов. Если задан необязательный целочисленный depth, возвращает объект кадра, расположенный на заданном количестве вызовов ниже вершины стека. Если это глубже, чем стек вызовов, поднимается
ValueError. По умолчанию depth равен нулю, возвращая кадр в верхней части стека вызовов.Возбуждает событие аудита
sys._getframeбез аргументов.Деталь реализации CPython: Эта функция должна использоваться только для внутренних и специализированных целей. Не гарантируется, что она будет существовать во всех реализациях Python.
-
sys.getprofile() -
Получить функцию профилирования, установленную с помощью
setprofile().
-
sys.gettrace() -
Получить функцию отслеживания, установленную с помощью
settrace().Деталь реализации CPython: Функция
gettrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, поэтому она может быть недоступна во всех реализациях Python.
-
sys.getwindowsversion() -
Возвращает кортеж с именами, описывающий текущую версию Windows. Имена элементов — major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version — кортеж из 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значение хэша, возвращаемое для 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(). Кортеж с именамиsys.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.9.14: Добавлены
default_max_str_digitsиstr_digits_check_threshold.
-
sys.__interactivehook__ -
Если этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатора в интерактивном режиме. Это происходит после чтения файла
PYTHONSTARTUP, так что вы можете установить этот обработчик там. Модульsiteустанавливает это.Вызывает событие аудита
cpython.run_interactivehookс объектом обработчика в качестве аргумента при вызове обработчика при запуске.Новое в версии 3.4.
-
sys.intern(string) -
Вставляет строку в таблицу «интернированных» строк и возвращает интернированную строку — это сама строка или ее копия. Интернирование строк полезно для повышения производительности при поиске в словарях — если ключи в словаре интернированы, а ключ поиска интернирован, сравнение ключей (после хэширования) можно выполнить путем сравнения указателей, а не строк. Обычно имена, используемые в программах Python, автоматически интернируются, а словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.
Интернированные строки не бессмертны; вы должны сохранить ссылку на возвращаемое значение
intern(), чтобы извлечь выгоду из него.
-
sys.is_finalizing() -
Возвращает
True, если интерпретатор Python завершает работу,Falseв противном случае.Новое в версии 3.5.
-
sys.last_type -
sys.last_value -
sys.last_traceback -
Эти три переменные не всегда определены; они устанавливаются, когда исключение не обрабатывается, и интерпретатор выводит сообщение об ошибке и трассировку стека. Их предназначение заключается в том, чтобы позволить интерактивному пользователю импортировать модуль отладчика и приступить к постобъектной отладке без необходимости повторного выполнения команды, вызвавшей ошибку. (Типичное использование —
import pdb; pdb.pm()для входа в отладчик после выполнения; см. модульpdbдля получения дополнительной информации.)Значение переменных совпадает со значениями возвращаемых из
exc_info()выше.
-
sys.maxsize -
Целое число, определяющее максимальное значение, которое может принимать переменная типа
Py_ssize_t. Обычно2**31 - 1на 32-битной платформе и2**63 - 1на 64-битной платформе.
-
sys.maxunicode -
Целое число, определяющее значение наибольшего кода Unicode, т. е.
1114111(0x10FFFFв шестнадцатеричном формате).Изменено в версии 3.3: До PEP 393,
sys.maxunicodeиспользовалось либо0xFFFF, либо0x10FFFF, в зависимости от параметра конфигурации, указывающего, хранятся ли символы Unicode как UCS-2 или UCS-4.
-
sys.meta_path -
Список объектов найдителей метапути, у которых вызываются методы
find_spec(), чтобы проверить, может ли один из них найти импортируемый модуль. Методfind_spec()вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль находится в пакете, то атрибут__path__родительского пакета передаётся в качестве второго аргумента. Метод возвращает объект спецификации модуля, илиNone, если модуль не найден.См. также
-
importlib.abc.MetaPathFinder -
Абстрактный базовый класс, определяющий интерфейс объектов-найдителей для
meta_path. -
importlib.machinery.ModuleSpec -
Конкретный класс, экземпляры которого должен возвращать метод
find_spec().
Изменено в версии 3.4: Спецификации модулей были представлены в Python 3.4, благодаря PEP 451. В более ранних версиях Python искался метод с именем
find_module(). Он всё ещё вызывается как резервный вариант, если у элемента вmeta_pathотсутствует методfind_spec(). -
-
sys.modules -
Это словарь, который сопоставляет имена модулей с уже загруженными модулями. Его можно изменить для принудительной перезагрузки модулей и других манипуляций. Однако, замена словаря может не работать так, как ожидается, а удаление важных элементов из словаря может привести к ошибке Python.
-
sys.path -
Список строк, определяющий путь поиска модулей. Инициализируется из переменной окружения
PYTHONPATHплюс платформенно-зависимый по умолчанию.При запуске программы первым элементом этого списка,
path[0], является каталог, содержащий скрипт, который был использован для вызова интерпретатора Python. Если каталог скрипта недоступен (например, если интерпретатор вызван интерактивно или если скрипт читается из стандартного ввода),path[0]является пустой строкой, что направляет Python на поиск модулей сначала в текущем каталоге. Обратите внимание, что каталог скрипта вставляется перед элементами, добавленными в результате использованияPYTHONPATH.Программа может свободно изменять этот список в собственных целях. В
sys.pathдолжны добавляться только строки и байты; все другие типы данных игнорируются при импорте.
-
sys.path_hooks -
Список вызываемых объектов, которые принимают аргумент пути для попытки создания объекта найдителя для данного пути. Если найдитель может быть создан, вызываемый объект должен вернуть его; иначе нужно вызвать
ImportError.Изначально описано в PEP 302.
-
sys.path_importer_cache -
Словарь, используемый в качестве кеша для объектов найдителей. Ключами являются пути, переданные в
sys.path_hooks, а значениями — найденные найдители. Если путь является корректным путём в файловой системе, но не найден найдитель вsys.path_hooks, то в словарь помещаетсяNone.Изначально описано в PEP 302.
Изменено в версии 3.3: Вместо
imp.NullImporterтеперь хранитсяNone, если найдитель не найден.
-
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 номер версии включался, рекомендуется всегда использовать приведенный выше фрагмент кода.Изменено в версии 3.8: Для AIX,
sys.platformбольше не содержит номер основной версии. Она всегда равна'aix', а не'aix5'или'aix7'. Поскольку в старых версиях Python номер версии включался, рекомендуется всегда использовать приведенный выше фрагмент кода.См. также
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(n) -
Установите ограничение длины строки преобразования целых чисел, используемое этим интерпретатором. См. также
get_int_max_str_digits().Введено в версии 3.9.14.
-
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.Доступность: Windows.
Новое в версии 3.6: См. PEP 529 для получения дополнительных сведений.
-
sys.stdin -
sys.stdout -
sys.stderr -
Файловые объекты, используемые интерпретатором для стандартного ввода, вывода и ошибок:
-
stdinиспользуется для всего интерактивного ввода (включая вызовыinput()); -
stdoutиспользуется для выводаprint()и операторов выражений, а также для подсказокinput(); - Собственные подсказки интерпретатора и сообщения об ошибках выводятся в
stderr.
Эти потоки являются обычными текстовыми файлами, подобными тем, которые возвращает функция
open(). Их параметры выбираются следующим образом:-
Кодировка символов зависит от платформы. Не-Windows платформы используют кодировку локали (см.
locale.getpreferredencoding()).В 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.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_msgNone.sys.unraisablehook()может быть переопределено для управления обработкой необрабатываемых исключений.Хранение exc_value с помощью пользовательского обработчика может создать цикл ссылок. Он должен быть явно очищен для разрыва цикла ссылок, когда исключение больше не нужно.
Хранение object с помощью пользовательского обработчика может возродить его, если он установлен на объект, который завершается. Избегайте хранения object после завершения пользовательского обработчика, чтобы избежать возрождения объектов.
См. также
excepthook(), который обрабатывает неперехваченные исключения.Вызывает событие аудита
sys.unraisablehookс аргументамиhook,unraisableпри возникновении исключения, которое нельзя обработать. Объектunraisableтакой же, как будет передан обработчику. Если обработчик не задан,hookможет бытьNone.Введено в версии 3.8.
-
sys.version -
Строка, содержащая номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте информацию о версии из нее, используйте
version_infoи функции, предоставляемые модулемplatform.
-
sys.api_version -
Версия C API для этого интерпретатора. Программисты могут найти это полезным при отладке конфликтов версий между Python и модулями расширений.
-
sys.version_info -
Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска —
'alpha','beta','candidate', или'final'. Значениеversion_infoдля версии Python 2.0 равно(2, 0, 0, 'final', 0). Компоненты также можно получить по имени, поэтомуsys.version_info[0]эквивалентноsys.version_info.majorи т. д.Изменено в версии 3.1: Добавлены атрибуты компонент с именами.
-
sys.warnoptions -
Это деталь реализации системы обработки предупреждений; не изменяйте это значение. Обратитесь к модулю
warningsдля получения дополнительной информации о системе обработки предупреждений.
-
sys.winver -
Номер версии, используемый для формирования ключей реестра в системах Windows. Он хранится в виде строкового ресурса 1000 в DLL Python. Значение обычно представляет собой первые три символа из
version. Предоставляется модулемsysдля информационных целей; изменение этого значения не оказывает влияния на ключи реестра, используемые Python.Доступность: Windows.
-
sys._xoptions -
Словарь различных флагов, специфичных для реализации, передаваемых через параметр командной строки
-X. Имена опций либо сопоставляются с их значениями, если они заданы явно, либо со значениемTrue. Пример:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}Деталь реализации CPython: Это специфичный для CPython способ доступа к параметрам, переданным через
-X. Другие реализации могут экспортировать их другими способами или вообще не экспортировать.Введено в версии 3.2.
Список использованных источников
-
C99 -
ISO/IEC 9899:1999. «Языки программирования — C». Публичный проект этого стандарта доступен по адресу http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/sys.html