28.1. sys – Системно-зависимые параметры и функции¶sys – System-specific parameters and functions
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, и к функциям, которые активно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.argv¶ Список аргументов командной строки, переданных скрипту Python.
argv[0]– это имя скрипта (зависит от операционной системы, является ли это полным именем пути или нет). Если команда была выполнена с использованием опции командной строки-cинтерпретатора,argv[0]устанавливается в строку'-c'. Если имя скрипта не было передано интерпретатору Python,argv[0]– пустая строка.Для циклического чтения стандартного ввода или списка файлов, переданных в командной строке, обратитесь к модулю
fileinput.
-
sys.byteorder¶ Индикатор естественного порядка байт. Имеет значение
'big'на платформах с big-endian (от старшего байта к младшему) и'little'на платформах с little-endian (от младшего байта к старшему).Новое в версии 2.0.
-
sys.builtin_module_names¶ Кортеж строк с именами всех модулей, скомпилированных в этот интерпретатор Python. (Эта информация недоступна никаким другим способом –
modules.keys()перечисляет только импортированные модули.)
-
sys.call_tracing(func, args)¶ Вызывает
func(*args)при включённой трассировке. Состояние трассировки сохраняется и восстанавливается после. Предназначено для вызова из отладчика из точки останова, чтобы рекурсивно отладить другой код.
-
sys.copyright¶ Строка, содержащая сведения об авторских правах на интерпретатор Python.
-
sys._clear_type_cache()¶ Очищает внутренний кеш типов. Кеш типов используется для ускорения поиска атрибутов и методов. Эту функцию следует использовать только для удаления лишних ссылок при отладке утечек ссылок.
Эту функцию следует использовать только для внутренних и специальных целей.
Новое в версии 2.6.
-
sys._current_frames()¶ Возвращает словарь, отображающий идентификатор каждого потока на верхний кадр стека, активный в этом потоке на момент вызова функции. Обратите внимание, что функции модуля
tracebackмогут построить стек вызовов по такому кадру.Это особенно полезно для отладки взаимоблокировок: эта функция не требует содействия заблокированных потоков, и стеки вызовов таких потоков заморожены, пока они остаются заблокированными. Кадр, возвращённый для незаблокированного потока, может не соответствовать текущей активности этого потока, когда вызывающий код изучает кадр.
Эту функцию следует использовать только для внутренних и специальных целей.
Новое в версии 2.5.
-
sys.dllhandle¶ Целое число, определяющее дескриптор DLL Python. Доступность: Windows.
-
sys.displayhook(value)¶ Если значение не равно
None, эта функция выводит его вsys.stdoutи сохраняет его в__builtin__._.sys.displayhookвызывается для результата вычисления выражения, введённого в интерактивном сеансе Python. Отображение этих значений можно настроить, присвоив другую функцию с одним аргументомsys.displayhook.
-
sys.dont_write_bytecode¶ Если это истина, Python не будет пытаться записывать файлы
.pycили.pyoпри импорте исходных модулей. Это значение изначально устанавливается вTrueилиFalseв зависимости от опции командной строки-Bи переменной окруженияPYTHONDONTWRITEBYTECODE, но его можно задать самостоятельно для управления созданием файлов байт-кода.Новое в версии 2.6.
-
sys.excepthook(type, value, traceback)¶ Эта функция выводит заданную трассировку и исключение в
sys.stderr.Когда возникает необработанное исключение, интерпретатор вызывает
sys.excepthookс тремя аргументами: класс исключения, экземпляр исключения и объект traceback. В интерактивном сеансе это происходит непосредственно перед возвратом управления в приглашение; в программе Python – перед завершением программы. Обработку таких исключений верхнего уровня можно настроить, присвоив другую функцию с тремя аргументамиsys.excepthook.
-
sys.__displayhook__¶ -
sys.__excepthook__¶ Эти объекты содержат исходные значения
displayhookиexcepthookв начале работы программы. Они сохраняются для того, чтобыdisplayhookиexcepthookможно было восстановить, если вдруг они будут заменены повреждёнными объектами.
-
sys.exc_info()¶ Эта функция возвращает кортеж из трёх значений, которые содержат информацию о исключении, обрабатываемом в данный момент. Возвращаемая информация специфична как для текущего потока, так и для текущего кадра стека. Если текущий кадр стека не обрабатывает исключение, информация берётся из вызывающего кадра стека, или его вызывающего, и так далее, пока не будет найден кадр, который обрабатывает исключение. Здесь «обработка исключения» определяется как «выполнение или завершение выполнения блока except». Для любого кадра стека доступна только информация о самом последнем обработанном исключении.
Если нигде в стеке не обрабатывается исключение, возвращается кортеж, содержащий три значения
None. В противном случае возвращаемые значения –(type, value, traceback). Их смысл: тип получает тип обрабатываемого исключения (объект класса); значение получает параметр исключения (его связанное значение или второй аргументraise, который всегда является экземпляром класса, если тип исключения – объект класса); трассировка получает объект трассировки (см. Справочное руководство), который инкапсулирует стек вызовов в точке, где первоначально возникло исключение.Если вызывается
exc_clear(), эта функция будет возвращать три значенияNoneдо тех пор, пока либо не возникнет другое исключение в текущем потоке, либо стек выполнения не вернётся к кадру, где обрабатывается другое исключение.Предупреждение
Присвоение возвращаемого значения трассировка локальной переменной в функции, которая обрабатывает исключение, приведёт к циклической ссылке. Это помешает сборщику мусора удалить любые объекты, на которые ссылается локальная переменная в той же функции или трассировка. Поскольку большинству функций не нужен доступ к трассировке, лучшим решением является использование чего-то вроде
exctype, value = sys.exc_info()[:2]для извлечения только типа и значения исключения. Если же трассировка всё-таки нужна, удалите её после использования (лучше всего с помощью оператораtry…finally) или вызовитеexc_info()в функции, которая сама не обрабатывает исключение.Примечание
Начиная с Python 2.2, такие циклы автоматически удаляются, когда сборка мусора включена и они становятся недостижимыми, но создание циклов по-прежнему более эффективно избегать.
-
sys.exc_clear()¶ Эта функция очищает всю информацию, относящуюся к текущему или последнему исключению произошедшему в текущем потоке. После вызова этой функции
exc_info()будет возвращать три значенияNoneдо тех пор, пока не возникнет другое исключение в текущем потоке или стек выполнения не вернётся к кадру, где обрабатывается другое исключение.Эта функция нужна лишь в нескольких редких случаях. К ним относятся системы журналирования и обработки ошибок, которые сообщают информацию о последнем или текущем исключении. Эту функцию можно также использовать для попытки освобождения ресурсов и запуска финализации объектов, хотя не даётся никаких гарантий относительно того, какие объекты будут освобождены, если вообще будут.
Новое в версии 2.3.
-
sys.exc_type¶ -
sys.exc_value¶ -
sys.exc_traceback¶ Устарело с версии 1.5: Используйте
exc_info()вместо этого.Поскольку это глобальные переменные, они не привязаны к текущему потоку, поэтому их использование небезопасно в многопоточной программе. Когда исключение не обрабатывается,
exc_typeустанавливается вNone, а остальные две не определены.
-
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, например2.7.
-
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()в конечном счёте «лишь» возбуждает исключение, он завершит процесс только при вызове из главного потока, и исключение не будет перехвачено.
-
sys.exitfunc¶ Это значение на самом деле не определено модулем, но может быть установлено пользователем (или программой) для задания действия очистки при завершении программы. При установке это должна быть функция без параметров. Эта функция будет вызвана при завершении интерпретатора. Таким способом можно установить только одну функцию; чтобы разрешить несколько функций, которые будут вызваны при завершении, используйте модуль
atexit.Примечание
Функция выхода не вызывается, когда программа завершается сигналом, когда обнаружена фатальная внутренняя ошибка Python или когда вызывается
os._exit().Устарело с версии 2.4: Используйте
atexitвместо этого.
-
sys.flags¶ Структурная последовательность flags показывает состояние флагов командной строки. Атрибуты доступны только для чтения.
атрибут
флаг
debugpy3k_warningdivision_warningdivision_newinteractiveoptimizeno_user_siteno_siteignore_environmenttabcheckverbosebytes_warninghash_randomizationНовое в версии 2.6.
Новое в версии 2.7.3: Атрибут
hash_randomization.
-
sys.float_info¶ Структура structseq, содержащая информацию о типе float. Она содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определённым в стандартном заголовочном файле
float.hязыка программирования C; подробнее см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], «Характеристики типов с плавающей запятой», для подробностей.атрибут
float.h макрос
объяснение
epsilonDBL_EPSILON
разница между 1 и наименьшим значением, большим 1, которое может быть представлено как float
digDBL_DIG
maximum number of decimal digits that can be faithfully represented in a float; see below
mant_digDBL_MANT_DIG
float precision: the number of base-
radixdigits in the significand of a floatDBL_MAX
максимальное представимое конечное число типа float
max_expDBL_MAX_EXP
максимальное целое e, такое что
radix**(e-1)является представимым конечным числом типа floatmax_10_expDBL_MAX_10_EXP
максимальное целое e, такое что
10**eнаходится в диапазоне представимых конечных чисел с плавающей запятойDBL_MIN
минимальное положительное нормализованное число типа float
min_expDBL_MIN_EXP
минимальное целое e, такое что
radix**(e-1)является нормализованным числом типа floatmin_10_expDBL_MIN_10_EXP
минимальное целое e, такое что
10**eявляется нормализованным числом типа floatradixFLT_RADIX
radix of exponent representation
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' # десятичная строка с 15 значащими цифрами >>> format(float(s), '.15g') # Преобразование во float и обратно -> то же значение '3.14159265358979'
Но для строк с более чем
sys.float_info.digзначащими цифрами это верно не всегда:>>> s = '9876543211234567' # 16 значащих цифр – слишком много! >>> format(float(s), '.16g') # преобразование изменяет значение '9876543211234568'
Новое в версии 2.6.
-
sys.float_repr_style¶ Строка, указывающая, как функция
repr()ведёт себя для чисел с плавающей запятой. Если строка имеет значение'short', то для конечного числа с плавающей запятойxфункцияrepr(x)стремится создать короткую строку со свойствомfloat(repr(x)) == x. Это обычное поведение в Python 2.7 и более поздних версиях. В противном случаеfloat_repr_styleимеет значение'legacy', иrepr(x)ведёт себя так же, как в версиях Python до 2.7.Новое в версии 2.7.
-
sys.getcheckinterval()¶ Возвращает «интервал проверки» интерпретатора; см.
setcheckinterval().Новое в версии 2.3.
-
sys.getdefaultencoding()¶ Возвращает имя текущей кодировки строк по умолчанию, используемой реализацией Unicode.
Новое в версии 2.0.
-
sys.getdlopenflags()¶ Возвращает текущее значение флагов, используемых для вызовов
dlopen(). Константы флагов определены в модуляхdlиDLFCN. Доступность: Unix.Новое в версии 2.2.
-
sys.getfilesystemencoding()¶ Возвращает имя кодировки, используемой для преобразования имён файлов в Юникоде в системные имена файлов, или
None, если используется системная кодировка по умолчанию. Результирующее значение зависит от операционной системы:На Mac OS X кодировка –
'utf-8'.В Unix кодировка определяется предпочтениями пользователя согласно результату nl_langinfo(CODESET), или
None, еслиnl_langinfo(CODESET)завершилась ошибкой.В Windows NT+ имена файлов изначально в Unicode, поэтому преобразование не выполняется.
getfilesystemencoding()по-прежнему возвращает'mbcs', так как это кодировка, которую приложения должны использовать, когда явно хотят преобразовать строки Unicode в байтовые строки, эквивалентные при использовании в качестве имён файлов.В Windows 9x кодировка –
'mbcs'.
Новое в версии 2.3.
-
sys.getrefcount(object)¶ Возвращает счётчик ссылок на объект. Возвращаемое значение обычно на единицу больше, чем можно ожидать, поскольку включает (временную) ссылку как аргумент
getrefcount().
-
sys.getrecursionlimit()¶ Возвращает текущее значение предела рекурсии – максимальную глубину стека интерпретатора Python. Этот предел предотвращает переполнение стека C и падение Python из-за бесконечной рекурсии. Его можно задать с помощью
setrecursionlimit().
-
sys.getsizeof(object[, default])¶ Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты возвращают корректные результаты, но для сторонних расширений это не обязательно – результат зависит от реализации.
Если задан параметр default, он будет возвращён в случае, если объект не предоставляет способа получить размер. В противном случае возбуждается
TypeError.getsizeof()вызывает метод__sizeof__объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.Новое в версии 2.6.
-
sys._getframe([depth])¶ Возвращает объект кадра из стека вызовов. Если задан необязательный целочисленный параметр depth, возвращается кадр, находящийся на указанное количество вызовов ниже вершины стека. Если это глубже, чем стек вызовов, возбуждается
ValueError. Значение по умолчанию для depth равно нулю – возвращается кадр на вершине стека вызовов.Особенности реализации CPython: Эта функция предназначена только для внутренних и специализированных целей. Она не гарантированно существует во всех реализациях Python.
-
sys.getprofile()¶ Возвращает профилирующую функцию, установленную с помощью
setprofile().Новое в версии 2.6.
-
sys.gettrace()¶ Возвращает трассировочную функцию, установленную с помощью
settrace().Особенность реализации CPython: Функция
gettrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия кода и тому подобного. Её поведение является частью платформы реализации, а не частью определения языка, и поэтому может быть недоступно во всех реализациях Python.Новое в версии 2.6.
-
sys.getwindowsversion()¶ Возвращает именованный кортеж с информацией о текущей версии Windows. Именованные элементы: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask и product_type. service_pack содержит строку, а все остальные значения – целые числа. Доступ к компонентам возможен также по имени, так что
sys.getwindowsversion()[0]эквивалентноsys.getwindowsversion().major. Для совместимости с предыдущими версиями по индексу доступны только первые 5 элементов.platform может принимать одно из следующих значений:
Константа
Платформа
0 (VER_PLATFORM_WIN32s)Win32s на Windows 3.1
1 (VER_PLATFORM_WIN32_WINDOWS)Windows 95/98/ME
2 (VER_PLATFORM_WIN32_NT)Windows NT/2000/XP/x64
3 (VER_PLATFORM_WIN32_CE)Windows CE
product_type может быть одним из следующих значений:
Константа
Значение
1 (VER_NT_WORKSTATION)Система является рабочей станцией.
2 (VER_NT_DOMAIN_CONTROLLER)Система является контроллером домена.
3 (VER_NT_SERVER)Система является сервером, но не контроллером домена.
Эта функция является обёрткой над функцией Win32
GetVersionEx(); см. документацию Microsoft поOSVERSIONINFOEX()для получения дополнительных сведений об этих полях.Доступность: Windows.
Новое в версии 2.3.
Изменено в версии 2.7: Изменён на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
-
sys.hexversion¶ Номер версии, закодированный в виде одного целого числа. Гарантируется, что он увеличивается с каждой версией, включая надлежащую поддержку непроизводственных выпусков. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 1.5.2, используйте:
if sys.hexversion >= 0x010502F0: # используйте некоторую продвинутую функцию ... else: # используйте альтернативную реализацию или предупредите пользователя ...
Этот объект называется
hexversion, потому что он действительно имеет смысл только при просмотре как результат передачи его встроенной функцииhex(). Значениеversion_infoможет использоваться для более удобочитаемого кодирования той же информации.hexversionпредставляет собой 32-битное число со следующей структурой:Биты (порядок big endian)
Значение
1-8PY_MAJOR_VERSION(2в2.1.0a3)9-16PY_MINOR_VERSION(1в2.1.0a3)17-24PY_MICRO_VERSION(0в2.1.0a3)25-28PY_RELEASE_LEVEL(0xAдля альфа-версии,0xBдля бета-версии,0xCдля кандидата в релиз и0xFдля финальной версии)29-32PY_RELEASE_SERIAL(3в2.1.0a3, ноль для финальных версий)Таким образом,
2.1.0a3– это hexversion0x020100a3.Новое в версии 1.5.2.
-
sys.long_info¶ struct sequence, содержащий информацию о внутреннем представлении целых чисел в Python. Атрибуты доступны только для чтения.
Атрибут
Пояснение
bits_per_digitколичество бит в каждом разряде. Целые числа Python хранятся внутри в системе с основанием
2**long_info.bits_per_digitsizeof_digitразмер в байтах типа C, используемого для представления разряда
Новое в версии 2.7.
-
sys.last_type¶ -
sys.last_value¶ -
sys.last_traceback¶ Эти три переменные определены не всегда; они устанавливаются, когда исключение не обработано и интерпретатор выводит сообщение об ошибке и трассировку стека. Они предназначены для того, чтобы пользователь в интерактивном режиме мог импортировать модуль отладчика и заняться посмертной отладкой, не выполняя заново команду, вызвавшую ошибку. (Обычно используется
import pdb; pdb.pm()для входа в посмертный отладчик; см. главу pdb – Отладчик Python для получения дополнительной информации.)Смысл переменных такой же, как у возвращаемых значений из
exc_info()выше. (Поскольку существует только один интерактивный поток, потокобезопасность для этих переменных не является проблемой, в отличие отexc_typeи т.д.)
-
sys.maxint¶ Наибольшее положительное целое число, поддерживаемое обычным целочисленным типом Python. Оно составляет не менее 2**31-1. Наибольшее отрицательное целое число –
-maxint-1– асимметрия возникает из-за использования двоичной арифметики в дополнительном коде.
-
sys.maxsize¶ Наибольшее положительное целое число, поддерживаемое типом Py_ssize_t платформы, и, следовательно, максимальный размер, который могут иметь списки, строки, словари и многие другие контейнеры.
-
sys.maxunicode¶ Целое число, задающее наибольший поддерживаемый код символа Unicode. Его значение зависит от параметра конфигурации, указывающего, хранятся ли символы Unicode как UCS-2 или UCS-4.
-
sys.meta_path¶ Список объектов finder, у которых вызываются методы
find_module(), чтобы проверить, может ли один из объектов найти импортируемый модуль. Методfind_module()вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то атрибут__path__родительского пакета передаётся в качестве второго аргумента. Метод возвращаетNone, если модуль не найден, иначе возвращает loader.sys.meta_pathпросматривается перед любыми неявными искателями по умолчанию илиsys.path.See PEP 302 for the original specification.
-
sys.modules¶ Это словарь, который сопоставляет имена модулей с уже загруженными модулями. С ним можно манипулировать, чтобы принудительно перезагрузить модули и выполнить другие трюки. Обратите внимание, что удаление модуля из этого словаря – не то же самое, что вызов
reload()для соответствующего объекта модуля.
-
sys.path¶ Список строк, задающий путь поиска модулей. Инициализируется из переменной окружения
PYTHONPATH, а также из специфичного для установки значения по умолчанию.При инициализации при запуске программы первый элемент этого списка,
path[0], содержит каталог со скриптом, который был использован для вызова интерпретатора Python. Если каталог скрипта недоступен (например, если интерпретатор запущен в интерактивном режиме или скрипт читается из стандартного ввода),path[0]является пустой строкой, что заставляет Python сначала искать модули в текущем каталоге. Обратите внимание, что каталог скрипта вставляется до записей, добавленных в результатеPYTHONPATHПрограмма может свободно изменять этот список для своих целей.
Изменено в версии 2.3: Строки Unicode больше не игнорируются.
-
sys.path_hooks¶ Список вызываемых объектов, которые принимают аргумент-путь и пытаются создать искатель для этого пути. Если искатель может быть создан, вызываемый объект должен вернуть его, иначе – возбудить
ImportError.Впервые описано в PEP 302.
-
sys.path_importer_cache¶ Словарь, действующий как кэш для объектов finder. Ключами являются пути, которые были переданы в
sys.path_hooks, а значениями – найденные искатели. Если путь является допустимым путём файловой системы, но ни один явный искатель не найден вsys.path_hooks, то сохраняетсяNone, чтобы указать, что следует использовать неявный искатель по умолчанию. Если путь не существует, то устанавливаетсяimp.NullImporter.Впервые описано в PEP 302.
-
sys.platform¶ Эта строка содержит идентификатор платформы, который можно использовать, например, для добавления платформозависимых компонентов к
sys.path.Для большинства систем Unix это имя ОС в нижнем регистре, возвращаемое функцией
uname -s, к которому добавляется первая часть версии, возвращаемая функциейuname -r, например'sunos5'на момент сборки Python. Если не требуется проверять конкретную версию системы, рекомендуется использовать следующий идиоматический код:if sys.platform.startswith('freebsd'): # Код, специфичный для FreeBSD, здесь... elif sys.platform.startswith('linux'): # Код, специфичный для Linux...
Изменено в версии 2.7.3: Поскольку множество кода проверяет
sys.platform == 'linux2', и между Linux 2.x и 3.x нет существенных изменений,sys.platformвсегда устанавливается в'linux2', даже на Linux 3.x. Начиная с Python 3.3 значение всегда будет установлено в'linux', поэтому рекомендуется всегда использовать идиомуstartswith, приведённую выше.Для остальных систем значения следующие:
Система
platformзначениеLinux (2.x и 3.x)
'linux2'Windows
'win32'Windows/Cygwin
'cygwin'Mac OS X
'darwin'OS/2
'os2'OS/2 EMX
'os2emx'RiscOS
'riscos'AtheOS
'atheos'См. также
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, например2.7.
-
sys.ps1¶ -
sys.ps2¶ Строки, задающие основное и дополнительное приглашения интерпретатора. Они определены только в интерактивном режиме. Их начальные значения в этом случае –
'>>> 'и'... '. Если одной из этих переменных присвоить объект, не являющийся строкой, егоstr()будет вычисляться заново каждый раз, когда интерпретатор готовится читать новую интерактивную команду; это можно использовать для реализации динамического приглашения.
-
sys.py3kwarning¶ Булево значение, содержащее состояние флага предупреждений Python 3. Оно равно
True, когда Python запущен с опцией -3. (Следует считать это значение только для чтения; установка другого значения не влияет на предупреждения Python 3.)Новое в версии 2.6.
-
sys.setcheckinterval(interval)¶ Устанавливает «интервал проверки» интерпретатора. Это целочисленное значение определяет, как часто интерпретатор проверяет периодические события, такие как переключения потоков и обработчики сигналов. Значение по умолчанию –
100, то есть проверка выполняется каждые 100 виртуальных инструкций Python. Установка большего значения может повысить производительность для программ, использующих потоки. Установка значения<=0 приводит к проверке каждой виртуальной инструкции, максимально повышая отзывчивость, но также и накладные расходы.
-
sys.setdefaultencoding(name)¶ Устанавливает текущую кодировку строк по умолчанию, используемую реализацией Unicode. Если name не соответствует ни одной доступной кодировке, возбуждается
LookupError. Эта функция предназначена только для использования реализацией модуляsiteи, при необходимости, модулемsitecustomize. После использования модулемsiteона удаляется из пространства имён модуляsys.Новое в версии 2.0.
-
sys.setdlopenflags(n)¶ Устанавливает флаги, используемые интерпретатором для вызовов
dlopen(), например, когда интерпретатор загружает модули расширений. В частности, это включает ленивое разрешение символов при импорте модуля, если вызвано какsys.setdlopenflags(0). Чтобы разделять символы между модулями расширений, вызовите какsys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL). Символические имена для модулей флагов можно найти либо в модулеdl, либо в модулеDLFCN. ЕслиDLFCNнедоступен, его можно сгенерировать из/usr/include/dlfcn.hс помощью скрипта h2py. Доступность: Unix.Новое в версии 2.2.
-
sys.setprofile(profilefunc)¶ Задаёт системную функцию профилирования, с помощью которой можно реализовать профилировщик исходного кода Python на самом Python. Подробнее о профилировщике Python см. в главе Профилировщики Python. Системная функция профилирования вызывается аналогично системной трассировочной функции (см.
settrace()), но с другими событиями – например, она не вызывается для каждой исполняемой строки кода (только при вызове и возврате, причём событие возврата сообщается, даже если было установлено исключение). Функция привязана к потоку, но у профилировщика нет способа узнать о переключении контекста между потоками, поэтому использовать её в присутствии нескольких потоков не имеет смысла. Кроме того, её возвращаемое значение не используется, так что она может просто возвращатьNone.Функции профилирования должны принимать три аргумента: frame, event и arg. frame – это текущий стековый фрейм. event – строка:
'call','return','c_call','c_return'или'c_exception'. arg зависит от типа события.События имеют следующее значение:
'call'Вызывается функция (или выполняется вход в другой блок кода). Вызывается профилирующая функция; arg равен
None.'return'Функция (или другой блок кода) собирается вернуть результат. Вызывается профилирующая функция; arg – это возвращаемое значение, или
None, если событие вызвано возбуждением исключения.'c_call'Готовится вызов C-функции. Это может быть функция расширения или встроенная функция. arg – это объект C-функции.
'c_return'C-функция вернула результат. arg – это объект C-функции.
'c_exception'C-функция возбудила исключение. arg – это объект C-функции.
-
sys.setrecursionlimit(limit)¶ Устанавливает максимальную глубину стека интерпретатора Python в limit. Этот предел предотвращает переполнение C-стека из-за бесконечной рекурсии и аварийное завершение Python.
Максимально возможное значение предела зависит от платформы. Может потребоваться установить более высокий предел для программы, требующей глубокой рекурсии, если платформа это поддерживает. Делать это нужно осторожно, так как слишком высокий предел может привести к аварийному завершению.
-
sys.settrace(tracefunc)¶ Задаёт системную трассировочную функцию, с помощью которой можно реализовать отладчик исходного кода Python на самом Python. Функция привязана к потоку; чтобы отладчик поддерживал несколько потоков, её нужно зарегистрировать с помощью
settrace()для каждого отлаживаемого потока.Трассировочные функции должны принимать три аргумента: frame, event и arg. frame – это текущий кадр стека. event – строка:
'call','line','return'или'exception'. arg зависит от типа события.Трассировочная функция вызывается (с event, равным
'call') всякий раз, когда происходит вход в новую локальную область видимости; она должна вернуть ссылку на локальную трассировочную функцию для этой области илиNone, если область не нужно трассировать.Локальная трассировочная функция должна возвращать ссылку на себя (или на другую функцию для дальнейшей трассировки в этой области видимости) или
Noneдля отключения трассировки в этой областиСобытия имеют следующее значение:
'call'Функция вызвана (или начат другой блок кода). Вызывается глобальная функция трассировки; arg равно
None; возвращаемое значение задаёт локальную функцию трассировки.'line'Интерпретатор собирается выполнить новую строку кода или повторно вычислить условие цикла. Вызывается локальная трассировочная функция; arg равен
None; возвращаемое значение задаёт новую локальную трассировочную функцию. Подробное объяснение работы см. вObjects/lnotab_notes.txt.'return'Функция (или другой блок кода) собирается вернуть значение. Вызывается локальная функция трассировки; arg – это значение, которое будет возвращено, или
None, если событие вызвано возбуждённым исключением. Возвращаемое значение функции трассировки игнорируется.'exception'Произошло исключение. Вызывается локальная функция трассировки; arg – это кортеж
(exception, value, traceback); возвращаемое значение задаёт новую локальную функцию трассировки.
Обратите внимание, что при распространении исключения по цепочке вызывающих на каждом уровне генерируется событие
'exception'.Дополнительную информацию об объектах кода и фреймах см. в Стандартной иерархии типов.
Особенность реализации CPython: Функция
settrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия кода и тому подобного. Её поведение является частью платформы реализации, а не частью определения языка, и поэтому может быть недоступно во всех реализациях Python.
-
sys.settscdump(on_flag)¶ Включает дамп измерений виртуальной машины с использованием счётчика временных меток Pentium, если on_flag истинен. Отключает эти дампы, если on_flag выключен. Функция доступна только если Python был скомпилирован с
--with-tsc. Чтобы понять вывод этого дампа, прочитайтеPython/ceval.cв исходниках Python.Новое в версии 2.4.
Особенность реализации CPython: Эта функция тесно привязана к внутренним деталям CPython и вряд ли будет реализована в других интерпретаторах.
-
sys.stdin¶ -
sys.stdout¶ -
sys.stderr¶ Файловые объекты, соответствующие потокам стандартного ввода, вывода и ошибок интерпретатора.
stdinиспользуется для всего ввода интерпретатора, кроме скриптов, включая вызовыinput()иraw_input().stdoutиспользуется для вывода операторовprintи выражений, а также для подсказокinput()иraw_input(). Собственные подсказки интерпретатора и (почти все) сообщения об ошибках направляются вstderr.stdoutиstderrне обязательно должны быть встроенными файловыми объектами: подойдет любой объект, имеющий методwrite(), принимающий строковый аргумент. (Изменение этих объектов не влияет на стандартные потоки ввода-вывода процессов, запускаемыхos.popen(),os.system()или семейством функцийexec*()в модулеos.)
-
sys.__stdin__¶ -
sys.__stdout__¶ -
sys.__stderr__¶ Эти объекты содержат исходные значения
stdin,stderrиstdoutв начале программы. Они используются во время финализации и могут быть полезны для вывода в реальный стандартный поток, независимо от того, был ли перенаправлен объектsys.std*.Его также можно использовать для восстановления реальных файлов до известных работающих файловых объектов, если они были перезаписаны некорректным объектом. Однако предпочтительный способ – явно сохранить предыдущий поток перед его заменой и восстановить сохранённый объект.
-
sys.subversion¶ Тройка (repo, branch, version), представляющая информацию Subversion об интерпретаторе Python. repo – имя репозитория,
'CPython'. branch – строка одного из видов:'trunk','branches/name'или'tags/name'. version – выводsvnversion, если интерпретатор был собран из рабочей копии Subversion; он содержит номер редакции (диапазон) и, возможно, завершающую букву 'M', если были локальные изменения. Если дерево было экспортировано (или svnversion был недоступен), это номер редакцииInclude/patchlevel.h, если ветка является тегом. В противном случае этоNone.Новое в версии 2.5.
Примечание
Python теперь разрабатывается с использованием Git. В недавних выпусках исправлений Python 2.7
subversionпоэтому содержит замещающую информацию. В Python 3.3 она удалена.
-
sys.tracebacklimit¶ Когда этой переменной присвоено целое значение, она определяет максимальное количество уровней трассировки, выводимых при необработанном исключении. По умолчанию
1000. Если установлено0или меньше, вся информация трассировки подавляется и выводятся только тип и значение исключения.
-
sys.version¶ Строка, содержащая номер версии интерпретатора Python, а также дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте из неё информацию о версии; вместо этого используйте
version_infoи функции, предоставляемые модулемplatform.
-
sys.api_version¶ Версия C API для данного интерпретатора. Программисты могут счесть это полезным при отладке конфликтов версий между Python и модулями расширения.
Новое в версии 2.3.
-
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и так далее.Новое в версии 2.0.
Изменено в версии 2.7: Добавлены именованные атрибуты компонентов
-
sys.warnoptions¶ Это деталь реализации механизма предупреждений; не изменяйте это значение. Обратитесь к модулю
warningsза дополнительной информацией о механизме предупреждений.
-
sys.winver¶ Номер версии, используемый для формирования ключей реестра на платформах Windows. Он хранится как строковый ресурс 1000 в DLL Python. Обычно это первые три символа
version. Приведён в модулеsysв информационных целях; изменение этого значения не влияет на ключи реестра, используемые Python. Доступность: Windows.
Ссылки
- C99
ISO/IEC 9899:1999. «Языки программирования – C.» Публичный проект этого стандарта доступен по адресу http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.