Документация Python неофициальный перевод

sys.md

854 строк · 52.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.0/library/sys.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `sys` – Системно-зависимые параметры и функции89Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, и к функциям, которые активно взаимодействуют с интерпретатором. Он всегда доступен.1011#### `[sys.argv]sys.argv`1213Список аргументов командной строки, переданных скрипту Python. `argv[0]` – это имя скрипта (зависит от операционной системы, является ли это полным именем пути или нет). Если команда была выполнена с использованием опции командной строки [*-c*](https://python-all.ru/3.0/using/cmdline.html#cmdoption-c) интерпретатора, `argv[0]` устанавливается в строку `'-c'`. Если имя скрипта не было передано интерпретатору Python, `argv[0]` является пустой строкой.1415Для итерации по стандартному вводу или списку файлов, переданных в командной строке, обратитесь к модулю [`fileinput`](https://python-all.ru/3.0/library/fileinput.html#module-fileinput).1617#### `[sys.byteorder]sys.byteorder`1819Индикатор естественного порядка байтов. Значение равно2021`'big'`2223на платформах с обратным порядком (от старшего байта к младшему) и2425`'little'`2627на платформах с прямым порядком (от младшего байта к старшему).2829#### `[sys.subversion]sys.subversion`3031Тройка (repo, branch, version), представляющая информацию Subversion об интерпретаторе Python.3233*repo*3435– имя репозитория,3637`'CPython'`3839.4041*branch*4243– строка одного из видов4445`'trunk'`4647,4849`'branches/name'`5051или5253`'tags/name'`5455.5657*version*5859– вывод6061`svnversion`6263, если интерпретатор был собран из Subversion-рабочей копии; он содержит номер ревизии (диапазон) и, возможно, завершающую букву ‘M’, если были локальные изменения. Если дерево было экспортировано (или svnversion недоступен), то это ревизия6465`Include/patchlevel.h`6667, если ветка является тегом. В противном случае –6869`None`7071.7273#### `[sys.builtin_module_names]sys.builtin_module_names`7475Кортеж строк с именами всех модулей, вкомпилированных в данный интерпретатор Python. (Эту информацию нельзя получить иным способом –7677`modules.keys()`7879перечисляет только импортированные модули.)8081#### `[sys.copyright]sys.copyright`8283Строка, содержащая сведения об авторских правах на интерпретатор Python.8485#### `[sys._clear_type_cache]sys._clear_type_cache()`8687Очищает внутренний кеш типов. Кеш типов используется для ускорения поиска атрибутов и методов. Эту функцию следует использовать *только* для удаления лишних ссылок при отладке утечек ссылок.8889Эту функцию следует использовать только для внутренних и специальных целей.9091#### `[sys._current_frames]sys._current_frames()`9293Возвращает словарь, сопоставляющий идентификатор каждого потока самому верхнему фрейму стека, активному в этом потоке на момент вызова функции. Обратите внимание, что функции модуля [`traceback`](https://python-all.ru/3.0/library/traceback.html#module-traceback) могут построить стек вызовов, имея такой фрейм.9495Это особенно полезно для отладки взаимоблокировок: эта функция не требует содействия заблокированных потоков, и стеки вызовов таких потоков заморожены, пока они остаются заблокированными. Кадр, возвращённый для незаблокированного потока, может не соответствовать текущей активности этого потока, когда вызывающий код изучает кадр.9697Эту функцию следует использовать только для внутренних и специальных целей.9899#### `[sys.dllhandle]sys.dllhandle`100101Целое число, определяющее дескриптор DLL Python. Доступность: Windows.102103#### `[sys.displayhook]sys.displayhook(value)`104105Если *value* не равно `None`, эта функция выводит его в `sys.stdout` и сохраняет в `builtins._`.106107`sys.displayhook` вызывается для результата вычисления [*выражения*](https://python-all.ru/3.0/glossary.html#term-expression), введённого в интерактивном сеансе Python. Отображение этих значений можно настроить, назначив другую функцию с одним аргументом на `sys.displayhook`.108109#### `[sys.excepthook]sys.excepthook(type, value, traceback)`110111Эта функция выводит заданный traceback и исключение в `sys.stderr`.112113Когда возникает неперехваченное исключение, интерпретатор вызывает `sys.excepthook` с тремя аргументами: классом исключения, экземпляром исключения и объектом traceback. В интерактивном сеансе это происходит непосредственно перед возвратом управления к приглашению; в программе Python это происходит непосредственно перед выходом программы. Обработку таких исключений верхнего уровня можно настроить, назначив другую функцию с тремя аргументами на `sys.excepthook`.114115#### `[sys.__displayhook__]sys.__displayhook__`116117#### `sys.__excepthook__`118119Эти объекты содержат исходные значения120121`displayhook`122123и124125`excepthook`126127в начале программы. Они сохраняются, чтобы128129`displayhook`130131и132133`excepthook`134135можно было восстановить, если они случайно будут заменены сломанными объектами.136137#### `[sys.exc_info]sys.exc_info()`138139Эта функция возвращает кортеж из трёх значений, содержащих информацию об обрабатываемом в данный момент исключении. Возвращаемая информация относится как к текущему потоку, так и к текущему фрейму стека. Если текущий фрейм стека не обрабатывает исключение, информация берётся из вызывающего фрейма стека или его вызывающего, и так далее, пока не будет найден фрейм, обрабатывающий исключение. Здесь «обработка исключения» означает «выполнение блока except». Для любого фрейма стека доступна только информация об исключении, обрабатываемом в данный момент.140141Если нигде в стеке не обрабатывается исключение, возвращается кортеж из трёх значений `None`. В противном случае возвращаются значения `(type, value, traceback)`. Их смысл: *type* содержит тип обрабатываемого исключения (объект класса); *value* содержит параметр исключения (его *связанное значение* или второй аргумент [`raise`](https://python-all.ru/3.0/reference/simple_stmts.html#raise), который всегда является экземпляром класса, если тип исключения – объект класса); *traceback* содержит объект трассировки (см. справочное руководство), который инкапсулирует стек вызовов в точке, где изначально произошло исключение.142143> **Предупреждение**144>145> Присваивание возвращаемого значения *traceback* локальной переменной в функции, обрабатывающей исключение, приведёт к циклической ссылке. Поскольку большинству функций не нужен доступ к traceback, лучшим решением будет использовать что-то вроде `exctype, value = sys.exc_info()[:2]`, чтобы извлечь только тип и значение исключения. Если же traceback всё-таки нужен, обязательно удалите его после использования (лучше всего это сделать с помощью оператора [`try`](https://python-all.ru/3.0/reference/compound_stmts.html#try) ... [`finally`](https://python-all.ru/3.0/reference/compound_stmts.html#finally)) или вызовите [`exc_info()`](https://python-all.ru/3.0/library/sys.html#sys.exc_info) в функции, которая сама не обрабатывает исключение.146>147> Такие циклы обычно автоматически удаляются, когда сборка мусора включена и они становятся недостижимыми, но всё же более эффективно избегать создания циклов.148149#### `[sys.exec_prefix]sys.exec_prefix`150151Строка, содержащая префикс каталога, специфичный для сайта, в который устанавливаются платформозависимые файлы Python; по умолчанию это также152153`'/usr/local'`154155. Это можно задать во время сборки с помощью аргумента156157*--exec-prefix*158159скрипта160161**configure**162163. В частности, все конфигурационные файлы (например, заголовочный файл164165`pyconfig.h`166167) устанавливаются в каталог168169`exec_prefix + '/lib/pythonversion/config'`170171, а модули разделяемых библиотек устанавливаются в172173`exec_prefix + '/lib/pythonversion/lib-dynload'`174175, где176177*version*178179равно180181`version[:3]`182183.184185#### `[sys.executable]sys.executable`186187Строка, содержащая имя исполняемого двоичного файла интерпретатора Python, на системах, где это имеет смысл.188189#### `[sys.exit]sys.exit([arg])`190191Выход из Python. Реализуется возбуждением исключения192193[`SystemExit`](https://python-all.ru/3.0/library/exceptions.html#exceptions.SystemExit)194195, так что действия по очистке, заданные в предложениях finally конструкций196197[`try`](https://python-all.ru/3.0/reference/compound_stmts.html#try)198199, выполняются, и попытку выхода можно перехватить на внешнем уровне. Необязательный аргумент200201*arg*202203может быть целым числом, задающим статус выхода (по умолчанию ноль), или объектом другого типа. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение – «аварийным завершением» в оболочках и тому подобном. Большинство систем требуют, чтобы оно было в диапазоне 0–127, иначе результат не определён. В некоторых системах существуют соглашения о присвоении определённых значений определённым кодам выхода, но они, как правило, слабо развиты; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех остальных видов ошибок. Если передан объект другого типа,204205`None`206207эквивалентен передаче нуля, а любой другой объект выводится в208209`sys.stderr`210211и приводит к коду выхода 1. В частности,212213`sys.exit("some error message")`214215– быстрый способ выйти из программы при возникновении ошибки.216217#### `[sys.flags]sys.flags`218219Структурная последовательность *flags* показывает состояние флагов командной строки. Атрибуты доступны только для чтения.220221| атрибут | флаг |222| --- | --- |223| `отладка` | -d |224| `py3k_warning` | -3 |225| `division_warning` | -Q |226| `division_new` | -Qnew |227| `inspect` | -i |228| `интерактивный` | -i |229| `optimize` | -O or -OO |230| [`dont_write_bytecode`](https://python-all.ru/3.0/library/sys.html#sys.dont_write_bytecode) | -B |231| `no_site` | -S |232| `ignore_environment` | -E |233| `verbose` | -v |234| `unicode` | -U |235236#### `[sys.float_info]sys.float_info`237238Структура structseq, содержащая информацию о типе float. Включает низкоуровневые\\nсведения о точности и внутреннем представлении. Для получения дополнительной\\nинформации изучите файл `float.h` вашей системы.239240| атрибут | объяснение |241| --- | --- |242| `epsilon` | Разница между 1 и следующим представимым\\nчислом с плавающей точкой. |243| `dig` | цифры (см. `float.h`) |244| `mant_dig` | цифры мантиссы (см. `float.h`) |245| [`max`](https://python-all.ru/3.0/library/functions.html#max) | максимальное представимое конечное число типа float |246| `max_exp` | максимальное целое e, такое что radix\*\*(e-1) находится в\\nдиапазоне конечных представимых чисел с плавающей точкой. |247| `max_10_exp` | максимальное целое e, такое что 10\*\*e находится в\\nдиапазоне конечных представимых чисел с плавающей точкой. |248| [`min`](https://python-all.ru/3.0/library/functions.html#min) | Минимальное положительное нормализованное число с плавающей точкой. |249| `min_exp` | минимальное целое e, такое что radix\*\*(e-1) является\\nнормализованным числом с плавающей точкой. |250| `min_10_exp` | минимальное целое e, такое что 10\*\*e является\\nнормализованным числом с плавающей точкой. |251| `основание системы счисления` | радикс экспоненты |252| `режим округления` | режимы округления при сложении (см. `float.h`) |253254> **Примечание**255>256> Информация в таблице упрощена.257258#### `[sys.getcheckinterval]sys.getcheckinterval()`259260Возвращает «интервал проверки» интерпретатора; см.261262[`setcheckinterval()`](https://python-all.ru/3.0/library/sys.html#sys.setcheckinterval)263264.265266#### `[sys.getdefaultencoding]sys.getdefaultencoding()`267268Возвращает имя текущей кодировки строк по умолчанию, используемой реализацией Unicode.269270#### `[sys.getdlopenflags]sys.getdlopenflags()`271272Возвращает текущее значение флагов, используемых для вызовов273274`dlopen`275276. Константы флагов определены в модулях277278[`ctypes`](https://python-all.ru/3.0/library/ctypes.html#module-ctypes)279280и281282`DLFCN`283284. Доступность: Unix.285286#### `[sys.getfilesystemencoding]sys.getfilesystemencoding()`287288Возвращает имя кодировки, используемой для преобразования имён файлов в Unicode в системные имена файлов, или `None`, если используется системная кодировка по умолчанию. Результирующее значение зависит от операционной системы:289290- В Windows 9x используется кодировка «mbcs».291- В Mac OS X используется кодировка «utf-8».292- В Unix кодировка определяется предпочтениями пользователя в соответствии с результатом nl\_langinfo(CODESET) или [`None`](https://python-all.ru/3.0/library/constants.html#None), если вызов `nl_langinfo(CODESET)` завершился неудачей.293- В Windows NT+ имена файлов изначально хранятся в Unicode, поэтому преобразование не выполняется. [`getfilesystemencoding()`](https://python-all.ru/3.0/library/sys.html#sys.getfilesystemencoding) по-прежнему возвращает `'mbcs'`, так как это кодировка, которую приложения должны использовать, когда они явно хотят преобразовать строки Unicode в байтовые строки, эквивалентные при использовании в качестве имён файлов.294295#### `[sys.getrefcount]sys.getrefcount(object)`296297Возвращает счетчик ссылок объекта298299*object*300301. Возвращаемое значение обычно на единицу больше ожидаемого, поскольку включает (временную) ссылку на объект в качестве аргумента302303[`getrefcount()`](https://python-all.ru/3.0/library/sys.html#sys.getrefcount)304305.306307#### `[sys.getrecursionlimit]sys.getrecursionlimit()`308309Возвращает текущее значение предела рекурсии – максимальной глубины стека интерпретатора Python. Этот предел предотвращает переполнение C-стека и аварийное завершение Python из-за бесконечной рекурсии. Его можно задать с помощью310311[`setrecursionlimit()`](https://python-all.ru/3.0/library/sys.html#sys.setrecursionlimit)312313.314315#### `[sys.getsizeof]sys.getsizeof(object[, default])`316317Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты возвращают корректные результаты, но для сторонних расширений это не обязательно – результат зависит от реализации.318319Аргумент *default* позволяет задать значение, которое будет возвращено, если тип объекта не предоставляет способа получить размер и это привело бы к *TypeError*.320321func:*getsizeof* вызывает метод \_\_sizeof\_\_ объекта и добавляет дополнительные накладные расходы на сборщик мусора, если объект управляется сборщиком мусора.322323#### `[sys._getframe]sys._getframe([depth])`324325Возвращает объект фрейма из стека вызовов. Если указан необязательный целочисленный параметр *depth*, возвращается объект фрейма, находящийся на указанное количество вызовов ниже вершины стека. Если это глубже, чем стек вызовов, возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError). Значение по умолчанию для *depth* равно нулю, при этом возвращается фрейм на вершине стека вызовов.326327Эту функцию следует использовать только для внутренних и специальных целей.328329#### `[sys.getprofile]sys.getprofile()`330331Возвращает функцию профилировщика, установленную с помощью [`setprofile()`](https://python-all.ru/3.0/library/sys.html#sys.setprofile).332333#### `[sys.gettrace]sys.gettrace()`334335Возвращает функцию трассировки, установленную с помощью [`settrace()`](https://python-all.ru/3.0/library/sys.html#sys.settrace).336337> **Примечание**338>339> Функция [`gettrace()`](https://python-all.ru/3.0/library/sys.html#sys.gettrace) предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия кода и тому подобного. Её поведение является частью конкретной реализации платформы, а не частью определения языка, и поэтому может быть недоступна во всех реализациях Python.340341#### `[sys.getwindowsversion]sys.getwindowsversion()`342343Возвращает кортеж из пяти компонентов, описывающих версию Windows, работающую в данный момент. Элементы: *major*, *minor*, *build*, *platform* и *text*. *text* содержит строку, а все остальные значения – целые числа.344345*platform* может принимать одно из следующих значений:346347| Константа | Платформа |348| --- | --- |349| `0 (VER_PLATFORM_WIN32s)` | Win32s на Windows 3.1 |350| `1 (VER_PLATFORM_WIN32_WINDOWS)` | Windows 95/98/ME |351| `2 (VER_PLATFORM_WIN32_NT)` | Windows NT/2000/XP/x64 |352| `3 (VER_PLATFORM_WIN32_CE)` | Windows CE |353354Эта функция является обёрткой над функцией Win32 `GetVersionEx`; обратитесь к документации Microsoft за дополнительной информацией об этих полях.355356Доступность: Windows.357358#### `[sys.hexversion]sys.hexversion`359360Номер версии, закодированный в виде одного целого числа. Гарантируется, что он увеличивается с каждой версией, включая надлежащую поддержку непроизводственных выпусков. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 1.5.2, используйте:361362```python363if sys.hexversion >= 0x010502F0:364    # используйте некоторую продвинутую функцию365    ...366else:367    # используйте альтернативную реализацию или предупредите пользователя368    ...369```370371Она называется `hexversion`, потому что действительно выглядит осмысленно только при передаче встроенной функции [`hex()`](https://python-all.ru/3.0/library/functions.html#hex). Значение `version_info` можно использовать для более понятного человеку представления той же информации.372373#### `[sys.intern]sys.intern(string)`374375Помещает *строку* в таблицу «интернированных» строк и возвращает интернированную строку – *строку* (ту же самую или копию). Интернирование строк полезно для небольшого повышения производительности поиска в словаре: если ключи в словаре интернированы и искомый ключ интернирован, сравнение ключей (после хеширования) может выполняться сравнением указателей, а не строк. Обычно имена, используемые в программах Python, автоматически интернируются, и словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.376377Интернированные строки не бессмертны; необходимо сохранять ссылку на возвращаемое значение [`intern()`](https://python-all.ru/3.0/library/sys.html#sys.intern), чтобы пользоваться преимуществами интернирования.378379#### `[sys.last_type]sys.last_type`380381#### `sys.last_value`382383#### `sys.last_traceback`384385Эти три переменные определены не всегда: они устанавливаются, когда исключение не обработано и интерпретатор печатает сообщение об ошибке и трассировку стека. Их назначение – дать возможность интерактивному пользователю импортировать модуль отладчика и заняться посмертной отладкой без необходимости повторного выполнения команды, вызвавшей ошибку. (Типичное использование – `import pdb; pdb.pm()` для входа в посмертный отладчик; см. главу [*pdb – Отладчик Python*](https://python-all.ru/3.0/library/pdb.html#debugger) для получения дополнительной информации.)386387Смысл этих переменных совпадает со смыслом возвращаемых значений из [`exc_info()`](https://python-all.ru/3.0/library/sys.html#sys.exc_info) выше. (Поскольку существует только один интерактивный поток, потокобезопасность не является проблемой для этих переменных, в отличие от `exc_type` и т.д.)388389#### `[sys.maxsize]sys.maxsize`390391Целое число, показывающее максимальное значение, которое может принимать переменная типа392393`Py_ssize_t`394395. Обычно это396397`2**31 - 1`398399на 32-битной платформе и400401`2**63 - 1`402403на 64-битной.404405#### `[sys.maxunicode]sys.maxunicode`406407Целое число, задающее наибольший поддерживаемый код символа Unicode. Его значение зависит от параметра конфигурации, указывающего, хранятся ли символы Unicode как UCS-2 или UCS-4.408409#### `[sys.modules]sys.modules`410411Это словарь, который сопоставляет имена модулей с уже загруженными модулями. Его можно использовать для принудительной перезагрузки модулей и других трюков.412413#### `[sys.path]sys.path`414415Список строк, задающих пути поиска модулей. Инициализируется из переменной окружения [**PYTHONPATH**](https://python-all.ru/3.0/using/cmdline.html#envvar-PYTHONPATH), дополненной значением по умолчанию, зависящим от установки.416417При запуске программы первый элемент этого списка, `path[0]`, содержит каталог со скриптом, который использовался для запуска интерпретатора Python. Если каталог скрипта недоступен (например, при интерактивном запуске интерпретатора или чтении скрипта со стандартного ввода), `path[0]` представляет собой пустую строку, что заставляет Python искать модули сначала в текущем каталоге. Обратите внимание, что каталог скрипта добавляется *перед* записями, добавляемыми в результате [**PYTHONPATH**](https://python-all.ru/3.0/using/cmdline.html#envvar-PYTHONPATH).418419Программа может свободно изменять этот список для своих целей.420421> **См. также**422>423> Модуль [`site`](https://python-all.ru/3.0/library/site.html#module-site) описывает, как использовать .pth-файлы для расширения [`sys.path`](https://python-all.ru/3.0/library/sys.html#sys.path).424425#### `[sys.platform]sys.platform`426427Эта строка содержит идентификатор платформы, который можно использовать, например, для добавления платформозависимых компонентов в [`sys.path`](https://python-all.ru/3.0/library/sys.html#sys.path).428429Для систем Unix это имя ОС в нижнем регистре, возвращаемое командой `uname -s`, с добавленной первой частью версии, возвращаемой командой `uname -r`, например `'sunos5'` или `'linux2'`, *на момент сборки Python*. Для других систем значения таковы:430431| Система | [`platform`](https://python-all.ru/3.0/library/sys.html#sys.platform) значение |432| --- | --- |433| Windows | `'win32'` |434| Windows/Cygwin | `'cygwin'` |435| Mac OS X | `'darwin'` |436| OS/2 | `'os2'` |437| OS/2 EMX | `'os2emx'` |438| RiscOS | `'riscos'` |439| AtheOS | `'atheos'` |440441#### `[sys.prefix]sys.prefix`442443Строка, содержащая префикс каталога, специфичного для сайта, в который устанавливаются платформонезависимые файлы Python; по умолчанию это строка444445`'/usr/local'`446447. Этот префикс можно задать во время сборки с помощью аргумента448449*--prefix*450451скрипта452453**configure**454455. Основная коллекция модулей библиотек Python устанавливается в каталог456457`prefix + '/lib/pythonversion'`458459, в то время как платформонезависимые заголовочные файлы (все, кроме460461`pyconfig.h`462463) хранятся в464465`prefix + '/include/pythonversion'`466467, где468469*version*470471равно472473`version[:3]`474475.476477#### `[sys.ps1]sys.ps1`478479#### `sys.ps2`480481Строки, задающие основное и дополнительное приглашения интерпретатора. Они определены только в том случае, если интерпретатор работает в интерактивном режиме. Их начальные значения в этом случае – `'>>> '` и `'... '`. Если какой-либо из этих переменных присвоить нестроковый объект, его [`str()`](https://python-all.ru/3.0/library/functions.html#str) будет вычисляться заново каждый раз, когда интерпретатор готовится прочитать новую интерактивную команду; это можно использовать для реализации динамического приглашения.482483#### `[sys.dont_write_bytecode]sys.dont_write_bytecode`484485Если это истинно, Python не будет пытаться создавать файлы486487`.pyc`488489или490491`.pyo`492493при импорте исходных модулей. Изначально этому параметру присваивается494495`True`496497или498499`False`500501в зависимости от опции командной строки502503`-B`504505и переменной окружения506507`PYTHONDONTWRITEBYTECODE`508509, однако его можно задать самостоятельно для управления генерацией файлов байт-кода.510511#### `[sys.setcheckinterval]sys.setcheckinterval(interval)`512513Устанавливает «интервал проверки» интерпретатора. Это целочисленное значение определяет, как часто интерпретатор проверяет периодические события, такие как переключения потоков и обработчики сигналов. Значение по умолчанию –514515`100`516517, то есть проверка выполняется каждые 100 виртуальных инструкций Python. Установка большего значения может повысить производительность для программ, использующих потоки. Установка значения518519`<=`5205210 приводит к проверке каждой виртуальной инструкции, максимально повышая отзывчивость, но также и накладные расходы.522523#### `[sys.setdefaultencoding]sys.setdefaultencoding(name)`524525Устанавливает текущую кодировку строк по умолчанию, используемую реализацией Unicode. Если526527*name*528529не соответствует ни одной доступной кодировке, вызывается530531[`LookupError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.LookupError)532533. Эта функция предназначена только для использования реализацией модуля534535[`site`](https://python-all.ru/3.0/library/site.html#module-site)536537и, при необходимости, модулем538539`sitecustomize`540541. После использования модулем542543[`site`](https://python-all.ru/3.0/library/site.html#module-site)544545она удаляется из пространства имён модуля546547`sys`548549.550551#### `[sys.setdlopenflags]sys.setdlopenflags(n)`552553Устанавливает флаги, используемые интерпретатором для вызовов554555`dlopen`556557, например, когда интерпретатор загружает модули расширений. В частности, это может включить ленивое разрешение символов при импорте модуля, если вызвать как558559`sys.setdlopenflags(0)`560561. Чтобы разделять символы между модулями расширений, вызывайте как562563`sys.setdlopenflags(ctypes.RTLD_GLOBAL)`564565. Символические имена для модулей флагов можно найти либо в модуле566567[`ctypes`](https://python-all.ru/3.0/library/ctypes.html#module-ctypes)568569, либо в модуле570571`DLFCN`572573. Если574575`DLFCN`576577недоступен, его можно сгенерировать из578579`/usr/include/dlfcn.h`580581с помощью скрипта582583**h2py**584585. Доступность: Unix.586587#### `[sys.setfilesystemencoding]sys.setfilesystemencoding(enc)`588589Устанавливает кодировку, используемую при преобразовании строк Python в имена файлов, равной590591*enc*592593. По умолчанию Python пытается самостоятельно определить подходящую кодировку на Unix; на Windows он полностью избегает такого преобразования. Эта функция может быть полезна, когда определение кодировки Python необходимо переопределить, например, если не все имена файлов на диске можно декодировать с использованием кодировки, выбранной Python.594595#### `[sys.setprofile]sys.setprofile(profilefunc)`596597Устанавливает профилирующую функцию системы, что позволяет реализовать профилировщик исходного кода Python на самом Python. См. главу [*The Python Profilers*](https://python-all.ru/3.0/library/profile.html#profile) для получения дополнительной информации о профилировщике Python. Профилирующая функция системы вызывается аналогично системной трассирующей функции (см. [`settrace()`](https://python-all.ru/3.0/library/sys.html#sys.settrace)), но не вызывается для каждой выполняемой строки кода (только при вызове и возврате, при этом событие возврата сообщается даже в случае возникновения исключения). Функция привязана к потоку, но у профилировщика нет способа узнать о переключении контекста между потоками, поэтому использование этой функции в присутствии нескольких потоков не имеет смысла. Кроме того, её возвращаемое значение не используется, поэтому она может просто возвращать `None`.598599#### `[sys.setrecursionlimit]sys.setrecursionlimit(limit)`600601Устанавливает максимальную глубину стека интерпретатора Python в *limit*. Этот предел предотвращает переполнение C-стека из-за бесконечной рекурсии и аварийное завершение Python.602603Максимально возможное значение предела зависит от платформы. Может потребоваться установить более высокий предел для программы, требующей глубокой рекурсии, если платформа это поддерживает. Делать это нужно осторожно, так как слишком высокий предел может привести к аварийному завершению.604605#### `[sys.settrace]sys.settrace(tracefunc)`606607Устанавливает трассирующую функцию системы, что позволяет реализовать отладчик исходного кода Python на самом Python. Функция привязана к потоку; чтобы отладчик поддерживал несколько потоков, её необходимо зарегистрировать с помощью [`settrace()`](https://python-all.ru/3.0/library/sys.html#sys.settrace) для каждого отлаживаемого потока.608609Трассирующие функции должны принимать три аргумента: *frame*, *event* и *arg*. *frame* – это текущий стековый фрейм. *event* – строка: `'call'`, `'line'`, `'return'`, `'исключение'`, `'c_call'`, `'c_return'` или `'c_exception'`. Значение *arg* зависит от типа события.610611Трассирующая функция вызывается (с *event*, установленным в `'call'`) всякий раз, когда входит в новую локальную область видимости; она должна возвращать ссылку на локальную трассирующую функцию для этой области или `None`, если область не нужно трассировать.612613Локальная трассирующая функция должна возвращать ссылку на саму себя (или на другую функцию для продолжения трассировки в этой области) или `None`, чтобы отключить трассировку в этой области.614615События имеют следующее значение:616617**`'call'`**618619Вызывается функция (или вход в другой блок кода). Вызывается глобальная трассирующая функция;620621*arg*622623равен624625`None`626627; возвращаемое значение указывает локальную трассирующую функцию.628629**`'line'`**630631Интерпретатор собирается выполнить новую строку кода (иногда на одной строке происходит несколько событий line). Вызывается локальная функция трассировки;632633*arg*634635равно636637`None`638639; возвращаемое значение задаёт новую локальную функцию трассировки.640641**`'return'`**642643Функция (или другой блок кода) собирается вернуть управление. Вызывается локальная трассировочная функция;644645*arg*646647– значение, которое будет возвращено. Возвращаемое значение трассировочной функции игнорируется.648649**`'исключение'`**650651Произошло исключение. Вызывается локальная трассирующая функция;652653*arg*654655– это кортеж656657`(исключение, value, traceback)`658659; возвращаемое значение указывает новую локальную трассирующую функцию.660661**`'c_call'`**662663Вызов C-функции. Это может быть функция расширения или встроенная функция.664665*arg*666667– объект C-функции.668669**`'c_return'`**670671C-функция вернула управление.672673*arg*674675равен676677`None`678679.680681**`'c_exception'`**682683C-функция вызвала исключение.684685*arg*686687равен688689`None`690691.692693Обратите внимание, что при распространении исключения вниз по цепочке вызывающих объектов событие `'исключение'` генерируется на каждом уровне.694695Дополнительную информацию об объектах кода и фреймах см. в [*Стандартной иерархии типов*](https://python-all.ru/3.0/reference/datamodel.html#types).696697> **Примечание**698>699> Функция [`settrace()`](https://python-all.ru/3.0/library/sys.html#sys.settrace) предназначена только для реализации отладчиков, профайлеров, инструментов анализа покрытия кода и тому подобного. Её поведение является частью платформы реализации, а не определения языка, и поэтому может быть недоступно во всех реализациях Python.700701#### `[sys.settscdump]sys.settscdump(on_flag)`702703Включает дамп измерений виртуальной машины с использованием счётчика тактов Pentium, если704705*on\_flag*706707истинно. Отключает эти дампы, если708709*on\_flag*710711ложно. Функция доступна, только если Python был скомпилирован с опцией712713*--with-tsc*714715. Чтобы понять вывод этого дампа, прочитайте716717`Python/ceval.c`718719в исходном коде Python.720721#### `[sys.stdin]sys.stdin`722723#### `sys.stdout`724725#### `sys.stderr`726727Объекты файлов, соответствующие стандартным потокам ввода, вывода и ошибок интерпретатора. `stdin` используется для всего ввода интерпретатора, кроме скриптов, но включая вызовы [`input()`](https://python-all.ru/3.0/library/functions.html#input). `stdout` используется для вывода [`print()`](https://python-all.ru/3.0/library/functions.html#print) и операторов [*expression*](https://python-all.ru/3.0/glossary.html#term-expression), а также для приглашений [`input()`](https://python-all.ru/3.0/library/functions.html#input). Собственные приглашения интерпретатора и (почти все) его сообщения об ошибках направляются в `stderr`. `stdout` и `stderr` не обязательно должны быть встроенными файловыми объектами: подходит любой объект с методом `write()`, принимающим строковый аргумент. (Изменение этих объектов не влияет на стандартные потоки ввода/вывода процессов, выполняемых с помощью `os.popen()`, [`os.system()`](https://python-all.ru/3.0/library/os.html#os.system) или функций семейства `exec*()` из модуля [`os`](https://python-all.ru/3.0/library/os.html#module-os).)728729> **Примечание**730>731> Стандартные потоки по умолчанию находятся в текстовом режиме. Для записи или чтения двоичных данных используйте лежащий в основе двоичный буфер. Например, чтобы записать байты в [`stdout`](https://python-all.ru/3.0/library/sys.html#sys.stdout), используйте `sys.stdout.buffer.write(b'abc')`.732733#### `[sys.__stdin__]sys.__stdin__`734735#### `sys.__stdout__`736737#### `sys.__stderr__`738739> Эти объекты содержат исходные значения740>741> `stdin`742>743> ,744>745> `stderr`746>747> и748>749> `stdout`750>751> на момент запуска программы. Они используются во время финализации и могут быть полезны для восстановления реальных файлов до известных работоспособных файловых объектов, если они были перезаписаны сломанным объектом.752753> **Примечание**754>755> При некоторых условиях `stdin`, `stdout` и `stderr`, а также исходные значения `__stdin__`, `__stdout__` и `__stderr__` могут быть равны None. Обычно это характерно для GUI-приложений Windows, не подключенных к консоли, и для Python-приложений, запущенных с помощью **pythonw**.756757#### `[sys.tracebacklimit]sys.tracebacklimit`758759Когда этой переменной присвоено целое значение, она определяет максимальное количество уровней трассировки, выводимых при необработанном исключении. По умолчанию760761`1000`762763. Если установлено764765`0`766767или меньше, вся информация трассировки подавляется и выводятся только тип и значение исключения.768769#### `[sys.version]sys.version`770771Строка, содержащая номер версии интерпретатора Python, а также дополнительную информацию о номере сборки и используемом компиляторе. Она имеет значение вида `'version (#build_number, build_date, build_time) [compiler]'`. Первые три символа используются для идентификации версии в каталогах установки (где это применимо на каждой платформе). Пример:772773```python774>>> import sys775>>> sys.version776'1.5.2 (#0 Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)]'777```778779#### `[sys.api_version]sys.api_version`780781Версия C API для данного интерпретатора. Программисты могут счесть это полезным при отладке конфликтов версий между Python и модулями расширения.782783#### `[sys.version_info]sys.version_info`784785Кортеж, содержащий пять компонентов номера версии:786787*major*788789,790791*minor*792793,794795*micro*796797,798799*releaselevel*800801и802803*serial*804805. Все значения, кроме806807*releaselevel*808809, являются целыми числами; release level – это810811`'alpha'`812813,814815`'beta'`816817,818819`'candidate'`820821или822823`'final'`824825. Значение826827`version_info`828829, соответствующее версии Python 2.0, равно830831`(2, 0, 0, 'final', 0)`832833.834835#### `[sys.warnoptions]sys.warnoptions`836837Это деталь реализации инфраструктуры предупреждений; не изменяйте это значение. Обратитесь к модулю838839[`warnings`](https://python-all.ru/3.0/library/warnings.html#module-warnings)840841для получения дополнительной информации об инфраструктуре предупреждений.842843#### `[sys.winver]sys.winver`844845Номер версии, используемый для формирования ключей реестра на платформах Windows. Он хранится как строковый ресурс 1000 в DLL Python. Обычно значение – это первые три символа846847[`version`](https://python-all.ru/3.0/library/sys.html#sys.version)848849. Он предоставляется в модуле850851`sys`852853в информационных целях; изменение этого значения не влияет на ключи реестра, используемые Python. Доступность: Windows.854