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'.Функция
sys.displayhookвызывается при оценке выражения, введённого в интерактивной сессии Python. Отображение этих значений можно настроить, назначив другую одноаргументную функцию объектуsys.displayhook.Псевдокод:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = valueИзменено в версии 3.2: Используйте обработчик ошибок
'backslashreplace'дляUnicodeEncodeError.
-
sys.dont_write_bytecode -
Если это значение истинно, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это значение изначально устанавливается вTrueилиFalseв зависимости от командной строки-Bи переменной средыPYTHONDONTWRITEBYTECODE, но вы можете установить его самостоятельно для управления генерацией файлов байткода.
-
sys.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). Их смысл: тип получает тип обрабатываемого исключения (подклассBaseException); значение получает экземпляр исключения (экземпляр типа исключения); стек вызовов получает объект стека вызовов, который описывает стек вызовов в момент первоначального возникновения исключения.
-
sys.exec_prefix -
Строка, задающая префикс каталога, специфичного для сайта, где установлены зависящие от платформы файлы Python; по умолчанию, это также
'/usr/local'. Это можно установить во время сборки с помощью аргумента--exec-prefixскрипта configure. В частности, все файлы конфигурации (например, файл заголовковpyconfig.h) устанавливаются в каталогеexec_prefix/lib/pythonX.Y/config, а модули общих библиотек устанавливаются вexec_prefix/lib/pythonX.Y/lib-dynload, где X.Y — номер версии Python, например3.2.Примечание
Если активна виртуальная среда виртуальная среда, это значение будет изменено в
site.pyдля указания на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_exec_prefix.
-
sys.executable -
Строка, содержащая абсолютный путь к исполняемому бинарному файлу интерпретатора Python, в системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу,
sys.executableбудет пустой строкой илиNone.
-
sys.exit([arg]) -
Выход из Python. Это реализуется путем поднятия исключения
SystemExit, поэтому действия по очистке, указанные в блоках finally операторовtry, будут выполнены, и существует возможность перехватить попытку выхода на внешнем уровне.Необязательный аргумент arg может быть целым числом, задающим код завершения (по умолчанию ноль), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «ненормальным завершением» оболочками и т. п. Большинство систем требуют, чтобы оно находилось в диапазоне от 0 до 127, а в противном случае поведение не определено. В некоторых системах существует соглашение о назначении определённых значений кодам выхода, но они, как правило, слабо развиты; в программах Unix обычно используется 2 для ошибок синтаксиса командной строки и 1 для всех других типов ошибок. Если передаётся объект другого типа,
Noneэквивалентно передаче нуля, а любой другой объект выводится вstderrи приводит к коду завершения 1. В частности,sys.exit("some error message")— быстрый способ выхода из программы при возникновении ошибки.Поскольку
exit()в конечном итоге «только» поднимает исключение, он выйдет из процесса только при вызове из основного потока, и исключение не перехвачено.Изменено в версии 3.6: Если при очистке после того, как интерпретатор Python перехватил
SystemExit(например, при ошибке сброса буферизованных данных в стандартных потоках), возникает ошибка, код завершения меняется на 120.
-
sys.flags -
Названный кортеж названный кортеж flags показывает состояние флагов командной строки. Атрибуты только для чтения.
атрибут
флаг
debuginteractiveisolatedoptimizeno_user_siteno_siteignore_environmentverbosebytes_warningquiethash_randomizationdev_mode-Xdevutf8_mode-Xutf8int_max_str_digitsИзменено в версии 3.2: Добавлен атрибут
quietдля нового флага-q.Добавлен в версии 3.2.3: Атрибут
hash_randomization.Изменено в версии 3.3: Удалён устаревший атрибут
division_warning.Изменено в версии 3.4: Добавлен атрибут
isolatedдля флага-Iisolated.Изменено в версии 3.7: Добавлен атрибут
dev_modeдля нового флага-Xdevи атрибутutf8_modeдля нового флага-Xutf8.Изменено в версии 3.8.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
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
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()ведет себя для float. Если строка имеет значение'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.getcheckinterval() -
Возвращает «интервал проверки» интерпретатора; см.
setcheckinterval().Устарело начиная с версии 3.2: Используйте
getswitchinterval()вместо этого.
-
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.8.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.8.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.prefix -
Строка, задающая префикс каталога, специфичного для сайта, где установлены независимые от платформы файлы Python; по умолчанию это строка
'/usr/local'. Это значение можно установить во время компиляции, используя аргумент--prefixк скрипту configure. Основная коллекция модулей Python устанавливается в каталогеprefix/lib/pythonX.Y, в то время как независимые от платформы заголовочные файлы (кромеpyconfig.h) хранятся вprefix/include/pythonX.Y, где X.Y — номер версии Python, например3.2.Примечание
Если активна виртуальная среда виртуальной среды, значение этой переменной будет изменено в
site.pyдля указания на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_prefix.
-
sys.ps1 -
sys.ps2 -
Строки, определяющие первичный и вторичный приглашения интерпретатора. Они определены только если интерпретатор находится в интерактивном режиме. Их начальные значения в этом случае —
'>>> 'и'... '. Если переменной присвоено значение, отличное от строки, еёstr()переоценивается каждый раз, когда интерпретатор готовится к чтению новой интерактивной команды; это можно использовать для реализации динамического приглашения.
-
sys.setcheckinterval(interval) -
Установите «интервал проверки» интерпретатора. Это целое значение определяет, как часто интерпретатор проверяет периодические события, такие как переключение потоков и обработчики сигналов. Значение по умолчанию —
100, что означает, что проверка выполняется каждые 100 виртуальных инструкций Python. Увеличение этого значения может повысить производительность программ, использующих потоки. Установка значения<=0 проверяет каждую виртуальную инструкцию, максимизируя отзывчивость, а также накладные расходы.Устарело начиная с версии 3.2: Эта функция больше не имеет эффекта, так как внутренняя логика переключения потоков и асинхронных задач была переписана. Используйте
setswitchinterval()вместо этого.
-
sys.setdlopenflags(n) -
Установите флаги, используемые интерпретатором для
dlopen()вызовов, например, при загрузке интерпретатором модулей расширений. Среди прочего, это позволит выполнять ленивое разрешение символов при импорте модуля, если вызвана какsys.setdlopenflags(0). Чтобы использовать общие символы в модулях расширений, вызовите какsys.setdlopenflags(os.RTLD_GLOBAL). Символьные имена значений флагов можно найти в модулеos(RTLD_xxxконстанты, напримерos.RTLD_LAZY).Доступность: Unix.
-
sys.set_int_max_str_digits(n) -
Установите ограничение длины преобразования целых чисел в строку, используемое этой интерпретацией. См. также
get_int_max_str_digits().Введено в версии 3.8.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.
Примечание
Для записи или чтения двоичных данных в/из стандартных потоков используйте базовый двоичный объект
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_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 -
Версия API C для этой интерпретации. Программисты могут найти это полезным при отладке конфликтов версий между 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.8/library/sys.html