# `sys` — System-specific parameters and functions

This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available. Unless explicitly noted otherwise, all variables are read-only.

sys.abi_info

  Added in version 3.15.

  An object containing information about the ABI of the currently running Python interpreter. It should include information that affect the CPython ABI in ways that require a specific build of the interpreter chosen from variants that can co-exist on a single machine. For example, it does not encode the base OS (Linux or Windows), but does include pointer size since some systems support both 32- and 64-bit builds. The available entries are the same on all platforms; e.g. pointer_size is available even on 64-bit-only architectures.

  The following attributes are available:

  abi_info.pointer_bits

    The width of pointers in bits, as an integer, equivalent to `8 * sizeof(void *)`. Usually, this is `32` or `64`.

  abi_info.free_threaded

    A Boolean indicating whether the interpreter was built with free threading support. This reflects either the presence of the `--disable-gil` `configure` option (on Unix) or setting the `DisableGil` property (on Windows).

  abi_info.debug

    A Boolean indicating whether the interpreter was built in debug mode. This reflects either the presence of the `--with-pydebug` `configure` option (on Unix) or the `Debug` configuration (on Windows).

  abi_info.byteorder

    A string indicating the native byte order, either `'big'` or `'little'`. This is the same as the `byteorder` attribute.

sys.abiflags

  У системах POSIX, де Python було створено зі стандартним сценарієм `configure`, він містить прапорці ABI, визначені PEP 3149.

  Added in version 3.2.

  Змінено в версії 3.8: Прапорці за замовчуванням стали порожнім рядком (прапорець `m` для pymalloc видалено).

  Availability: Unix.

sys.addaudithook(hook)

  Додайте хук, що викликається, до списку активних хуків аудиту для поточного (суб)інтерпретатора.

  Коли подія аудиту викликається через функцію `sys.audit()`, кожен хук буде викликано в тому порядку, в якому він був доданий, з назвою події та кортежем аргументів. Власні хуки, додані `PySys_AddAuditHook()`, викликаються першими, а потім хуки, додані в поточному (під)інтерпретаторі. Потім хуки можуть зареєструвати подію, створити виняток для переривання операції або повністю завершити процес.

  Note that audit hooks are primarily for collecting information about internal or otherwise unobservable actions, whether by Python or libraries written in Python. They are not suitable for implementing a «sandbox». In particular, malicious code can trivially disable or bypass hooks added using this function. At a minimum, any security-sensitive hooks must be added using the C API `PySys_AddAuditHook()` before initialising the runtime, and any modules allowing arbitrary memory modification (such as `ctypes`) should be completely removed or closely monitored.

  Виклик `sys.addaudithook()` сам викличе подію аудиту під назвою `sys.addaudithook` без аргументів. Якщо будь-які існуючі хуки викликають виняток, отриманий від `RuntimeError`, новий хук не буде додано, а виняток придушено. Як наслідок, абоненти не можуть вважати, що їхній підхоплювач було додано, якщо вони не контролюють усі існуючі підхоплення.

  Перегляньте таблицю подій аудиту для всіх подій, викликаних CPython, і PEP 578 для обговорення оригінального дизайну.

  Added in version 3.8.

  Змінено в версії 3.8.1: Винятки, отримані від `Exception`, але не `RuntimeError` більше не пригнічуються.

  Коли трасування ввімкнено (див. `settrace()`), хуки Python відстежуються, лише якщо виклик має член `__cantrace__`, якому встановлено справжнє значення. Інакше функції трасування пропустять підключення.

sys.argv

  Список аргументів командного рядка, переданих до сценарію Python. `argv[0]` - це ім’я сценарію (це залежить від операційної системи, повний шлях чи ні). Якщо команда була виконана за допомогою параметра командного рядка `-c` інтерпретатора, `argv[0]` встановлюється на рядок `'-c'`. Якщо ім’я сценарію не було передано інтерпретатору Python, `argv[0]` буде порожнім рядком.

  Щоб перейти до стандартного введення або списку файлів, поданих у командному рядку, перегляньте модуль `fileinput`.

  Дивіться також `sys.orig_argv`.

  Примітка

  В Unix аргументи командного рядка передаються байтами з ОС. Python декодує їх за допомогою кодування файлової системи та обробника помилок «surrogateescape». Якщо вам потрібні оригінальні байти, ви можете отримати їх за допомогою `[os.fsencode(arg) for arg in sys.argv]`.

sys.audit(event, *args)

  Викликайте подію аудиту та запускайте будь-які активні перехоплення аудиту. event — це рядок, що ідентифікує подію, а args може містити додаткові аргументи з додатковою інформацією про подію. Кількість і типи аргументів для даної події вважаються загальнодоступним і стабільним API і не повинні змінюватися між випусками.

  Наприклад, одна подія аудиту має назву `os.chdir`. Ця подія має один аргумент під назвою шлях, який міститиме запитаний новий робочий каталог.

  `sys.audit()` викличе існуючі хуки аудиту, передаючи назву події та аргументи, і повторно викличе перший виняток із будь-якого хука. Загалом, якщо виникає виняток, його не слід обробляти, а процес слід завершити якомога швидше. Це дозволяє реалізаціям гаків вирішувати, як реагувати на певні події: вони можуть просто зареєструвати подію або перервати операцію, викликавши виняток.

  Хуки додаються за допомогою функцій `sys.addaudithook()` або `PySys_AddAuditHook()`.

  Власним еквівалентом цієї функції є `PySys_Audit()`. За можливості бажано використовувати нативну функцію.

  Перегляньте таблицю подій аудиту для всіх подій, викликаних CPython.

  Added in version 3.8.

sys.base_exec_prefix

  Equivalent to `exec_prefix`, but referring to the base Python installation.

  When running under Virtual Environments, `exec_prefix` gets overwritten to the virtual environment prefix. `base_exec_prefix`, conversely, does not change, and always points to the base Python installation. Refer to Virtual Environments for more information.

  Added in version 3.3.

sys.base_prefix

  Equivalent to `prefix`, but referring to the base Python installation.

  When running under virtual environment, `prefix` gets overwritten to the virtual environment prefix. `base_prefix`, conversely, does not change, and always points to the base Python installation. Refer to Virtual Environments for more information.

  Added in version 3.3.

sys.byteorder

  Індикатор рідного порядку байтів. Це матиме значення `'big'` на платформах з порядковим порядком старшого (спочатку найстарший байт) і `'little'` на платформах з порядковим порядком (спочатку молодший байт).

sys.builtin_module_names

  Кортеж рядків, що містить імена всіх модулів, скомпільованих у цей інтерпретатор Python. (Ця інформація недоступна іншим способом — `modules.keys()` містить лише список імпортованих модулів.)

  See also the `sys.stdlib_module_names` list.

sys.call_tracing(func, args)

  Call `func(*args)`, while tracing is enabled. The tracing state is saved, and restored afterwards. This is intended to be called from a debugger from a checkpoint, to recursively debug or profile some other code.

  Tracing is suspended while calling a tracing function set by `settrace()` or `setprofile()` to avoid infinite recursion. `call_tracing()` enables explicit recursion of the tracing function.

sys.copyright

  Рядок, що містить авторські права, що стосуються інтерпретатора Python.

sys._clear_type_cache()

  Очистіть внутрішній кеш типів. Кеш типів використовується для прискорення пошуку атрибутів і методів. Використовуйте функцію тільки, щоб видалити непотрібні посилання під час налагодження витоку посилань.

  Цю функцію слід використовувати лише для внутрішніх і спеціальних цілей.

  Застаріло починаючи з версії 3.13: Use the more general `_clear_internal_caches()` function instead.

sys._clear_internal_caches()

  Clear all internal performance-related caches. Use this function only to release unnecessary references and memory blocks when hunting for leaks.

  Added in version 3.13.

sys._current_frames()

  Повертає словник, який зіставляє ідентифікатор кожного потоку з найвищим фреймом стека, який зараз активний у цьому потоці на момент виклику функції. Зауважте, що функції в модулі `traceback` можуть створювати стек викликів за допомогою такого кадру.

  Це найбільш корисно для усунення тупикових блокувань: ця функція не потребує взаємодії потоків, що заблоковані, і стеки викликів таких потоків заморожені, доки вони залишаються тупиковими. Кадр, повернутий для потоку без блокування, може не мати зв’язку з поточною активністю цього потоку до моменту, коли код виклику перевіряє кадр.

  Цю функцію слід використовувати лише для внутрішніх і спеціальних цілей.

  Викликає подію аудиту `sys._current_frames` без аргументів.

sys._current_exceptions()

  Повертає словник, який зіставляє ідентифікатор кожного потоку з найвищим винятком, активним у цьому потоці на момент виклику функції. Якщо потік наразі не обробляє виняток, він не включається до словника результатів.

  Це найбільш корисно для статистичного профілювання.

  Цю функцію слід використовувати лише для внутрішніх і спеціальних цілей.

  Викликає подію аудиту `sys._current_exceptions` без аргументів.

  Змінено в версії 3.12: Each value in the dictionary is now a single exception instance, rather than a 3-tuple as returned from `sys.exc_info()`.

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` не перевіряється.

  Added in version 3.7.

sys._debugmallocstats()

  Друк інформації низького рівня на stderr про стан розподілювача пам’яті CPython.

  If Python is built in debug mode (`configure --with-pydebug option`), it also performs some expensive internal consistency checks.

  Added in version 3.3.

  Ця функція є специфічною для CPython. Точний вихідний формат тут не визначений і може змінюватися.

sys.dllhandle

  Ціле число, що визначає дескриптор DLL Python.

  Availability: Windows.

sys.displayhook(value)

  Якщо value не є `None`, ця функція друкує `repr(value)` до `sys.stdout` і зберігає значення у `builtins._`. Якщо `repr(value)` не можна закодувати в `sys.stdout.encoding` з `sys.stdout.errors` обробником помилок (який, ймовірно, `'strict'`), закодуйте його у `sys.stdout.encoding` з `'backslashreplace'` обробником помилок.

  `sys.displayhook` викликається на основі результату оцінки expression, введеного в інтерактивному сеансі 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._emscripten_info

  A named tuple holding information about the environment on the wasm32-emscripten platform. The named tuple is provisional and may change in the future.

  _emscripten_info.emscripten_version

    Emscripten version as tuple of ints (major, minor, micro), e.g. `(3, 1, 8)`.

  _emscripten_info.runtime

    Runtime string, e.g. browser user agent, `'Node.js v14.18.2'`, or `'UNKNOWN'`.

  _emscripten_info.pthreads

    `True` if Python is compiled with Emscripten pthreads support.

  _emscripten_info.shared_memory

    `True` if Python is compiled with shared memory support.

  Availability: Emscripten.

  Added in version 3.11.

sys.pycache_prefix

  If this is set (not `None`), Python will write bytecode-cache `.pyc` files to (and read them from) a parallel directory tree rooted at this directory, rather than from `__pycache__` directories in the source code tree. Any `__pycache__` directories in the source code tree will be ignored and new `.pyc` files written within the pycache prefix. Thus if you use `compileall` as a pre-build step, you must ensure you run it with the same pycache prefix (if any) that you will use at runtime.

  Відносний шлях інтерпретується відносно поточного робочого каталогу.

  Це значення спочатку встановлюється на основі значення параметра командного рядка `-X` `pycache_prefix=PATH` або змінної середовища `PYTHONPYCACHEPREFIX` (командний рядок має пріоритет). Якщо жоден не встановлений, це `None`.

  Added in version 3.8.

sys.excepthook(type, value, traceback)

  Ця функція друкує задану трасування та винятки для `sys.stderr`.

  When an exception other than `SystemExit` is raised and uncaught, the interpreter calls `sys.excepthook` with three arguments, the exception class, exception instance, and a traceback object. In an interactive session this happens just before control is returned to the prompt; in a Python program this happens just before the program exits. The handling of such top-level exceptions can be customized by assigning another three-argument function to `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`, якщо вони будуть замінені несправними або альтернативними об’єктами.

  Added in version 3.7: __breakpointhook__

  Added in version 3.8: __unraisablehook__

sys.exception()

  This function, when called while an exception handler is executing (such as an `except` or `except*` clause), returns the exception instance that was caught by this handler. When exception handlers are nested within one another, only the exception handled by the innermost handler is accessible.

  If no exception handler is executing, this function returns `None`.

  Added in version 3.11.

sys.exc_info()

  This function returns the old-style representation of the handled exception. If an exception `e` is currently handled (so `exception()` would return `e`), `exc_info()` returns the tuple `(type(e), e, e.__traceback__)`. That is, a tuple containing the type of the exception (a subclass of `BaseException`), the exception itself, and a traceback object which typically encapsulates the call stack at the point where the exception last occurred.

  If no exception is being handled anywhere on the stack, this function return a tuple containing three `None` values.

  Змінено в версії 3.11: The `type` and `traceback` fields are now derived from the `value` (the exception instance), so when an exception is modified while it is being handled, the changes are reflected in the results of subsequent calls to `exc_info()`.

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`.

  Примітка

  If a virtual environment is in effect, this `exec_prefix` will point to the virtual environment. The value for the Python installation will still be available, via `base_exec_prefix`. Refer to Virtual Environments for more information.

  Змінено в версії 3.14: When running under a virtual environment, `prefix` and `exec_prefix` are now set to the virtual environment prefix by the path initialization, instead of `site`. This means that `prefix` and `exec_prefix` always point to the virtual environment, even when `site` is disabled (`-S`).

sys.executable

  Рядок, що вказує абсолютний шлях до виконуваного двійкового файлу для інтерпретатора Python у системах, де це має сенс. Якщо Python не може отримати справжній шлях до свого виконуваного файлу, `sys.executable` буде порожнім рядком або `None`.

sys.exit([arg])

  Викликати виняток `SystemExit`, сигналізуючи про намір вийти з інтерпретатора.

  The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered «successful termination» and any nonzero value is considered «abnormal termination» by shells and the like. Most systems require it to be in the range 0–127, and produce undefined results otherwise. Some systems have a convention for assigning specific meanings to specific exit codes, but these are generally underdeveloped; Unix programs generally use 2 for command line syntax errors and 1 for all other kinds of errors. If another type of object is passed, `None` is equivalent to passing zero, and any other object is printed to `stderr` and results in an exit code of 1. In particular, `sys.exit("some error message")` is a quick way to exit a program when an error occurs.

  Since `exit()` ultimately «only» raises an exception, it will only exit the process when called from the main thread, and the exception is not intercepted. Cleanup actions specified by `finally` clauses of `try` statements are honored, and it is possible to intercept the exit attempt at an outer level.

  Змінено в версії 3.6: Якщо під час очищення виникає помилка після того, як інтерпретатор Python переловив `SystemExit` (наприклад, помилка очищення буферизованих даних у стандартних потоках), статус виходу змінюється на 120.

sys.flags

  The named tuple flags exposes the status of command line flags. Flags should only be accessed only by name and not by index. The attributes are read only.

  flags.debug | `-d`
  flags.inspect | `-i`
  flags.interactive | `-i`
  flags.isolated | `-I`
  flags.optimize | `-O` або `-OO`
  flags.dont_write_bytecode | `-B`
  flags.no_user_site | `-s`
  flags.no_site | `-S`
  flags.ignore_environment | `-E`
  flags.verbose | `-v`
  flags.bytes_warning | `-b`
  flags.quiet | `-q`
  flags.hash_randomization | `-R`
  flags.dev_mode | `-X dev` (Режим розробки Python)
  flags.utf8_mode | `-X utf8`
  flags.safe_path | `-P`
  flags.int_max_str_digits | `-X int_max_str_digits` (integer string conversion length limitation)
  flags.warn_default_encoding | `-X warn_default_encoding`
  flags.gil | `-X gil` and `PYTHON_GIL`
  flags.thread_inherit_context | `-X thread_inherit_context` and `PYTHON_THREAD_INHERIT_CONTEXT`
  flags.context_aware_warnings | `-X context_aware_warnings` and `PYTHON_CONTEXT_AWARE_WARNINGS`

  Змінено в версії 3.2: Додано атрибут `quiet` для нового прапора `-q`.

  Added in version 3.2.3: Атрибут `hash_randomization`.

  Змінено в версії 3.3: Видалено застарілий атрибут `division_warning`.

  Змінено в версії 3.4: Додано атрибут `isolated` для прапора `-I` `isolated`.

  Змінено в версії 3.7: Додано атрибут `dev_mode` для нового режиму розробки Python і атрибут `utf8_mode` для нового прапора `-X` `utf8`.

  Змінено в версії 3.10: Added `warn_default_encoding` attribute for `-X` `warn_default_encoding` flag.

  Змінено в версії 3.11: Added the `safe_path` attribute for `-P` option.

  Змінено в версії 3.11: Added the `int_max_str_digits` attribute.

  Змінено в версії 3.13: Added the `gil` attribute.

  Змінено в версії 3.14: Added the `thread_inherit_context` attribute.

  Змінено в версії 3.14: Added the `context_aware_warnings` attribute.

sys.float_info

  named tuple, що містить інформацію про тип float. Він містить інформацію низького рівня про точність і внутрішнє представлення. Значення відповідають різним константам із плаваючою комою, визначеним у стандартному файлі заголовків `float.h` для мови програмування «C»; подробиці див. у розділі 5.2.4.2.2 стандарту ISO/IEC C [C99], «Характеристики плаваючих типів» 1999 року.

  Attributes of the `float_info` named tuple
  атрибут | макрос float.h | пояснення
  --- | --- | ---
  float_info.epsilon | `DBL_EPSILON` | difference between 1.0 and the least value greater than 1.0 that is representable as a float. Дивіться також `math.ulp()`.
  float_info.dig | `DBL_DIG` | The maximum number of decimal digits that can be faithfully represented in a float; see below.
  float_info.mant_dig | `DBL_MANT_DIG` | Float precision: the number of base-`radix` digits in the significand of a float.
  float_info.max | `DBL_MAX` | The maximum representable positive finite float.
  float_info.max_exp | `DBL_MAX_EXP` | The maximum integer e such that `radix**(e-1)` is a representable finite float.
  float_info.max_10_exp | `DBL_MAX_10_EXP` | The maximum integer e such that `10**e` is in the range of representable finite floats.
  float_info.min | `DBL_MIN` | The minimum representable positive normalized float. Використовуйте `math.ulp(0.0)`, щоб отримати найменше додатне денормалізоване число з плаваючою точкою, яке можна представити.
  float_info.min_exp | `DBL_MIN_EXP` | The minimum integer e such that `radix**(e-1)` is a normalized float.
  float_info.min_10_exp | `DBL_MIN_10_EXP` | The minimum integer e such that `10**e` is a normalized float.
  float_info.radix | `FLT_RADIX` | The radix of exponent representation.
  float_info.rounds | `FLT_ROUNDS` | An integer representing the rounding mode for floating-point arithmetic. This reflects the value of the system `FLT_ROUNDS` macro at interpreter startup time: `-1`: indeterminable `0`: toward zero `1`: to nearest `2`: toward positive infinity `3`: toward negative infinity All other values for `FLT_ROUNDS` characterize implementation-defined rounding behavior.

  The attribute `sys.float_info.dig` needs further explanation. If `s` is any string representing a decimal number with at most `sys.float_info.dig` significant digits, then converting `s` to a float and back again will recover a string representing the same decimal value:

      >>> import sys
      >>> sys.float_info.dig
      15
      >>> s = '3.14159265358979'    # decimal string with 15 significant digits
      >>> format(float(s), '.15g')  # convert to float and back -> same value
      '3.14159265358979'

  Але для рядків із більш ніж `sys.float_info.dig` значущими цифрами це не завжди вірно:

      >>> s = '9876543211234567'    # 16 significant digits is too many!
      >>> format(float(s), '.16g')  # conversion changes value
      '9876543211234568'

sys.float_repr_style

  Рядок, що вказує, як функція `repr()` поводиться для чисел з плаваючою точкою. Якщо рядок має значення `'short`, тоді для кінцевого числа `x`, `repr(x)` має на меті створити короткий рядок із властивістю `float(repr(x)) == x`. Це звичайна поведінка в Python 3.1 і пізніших версіях. В іншому випадку `float_repr_style` має значення `'legacy'`, а `repr(x)` поводиться так само, як і у версіях Python до 3.1.

  Added in version 3.1.

sys.getallocatedblocks()

  Return the number of memory blocks currently allocated by the interpreter, regardless of their size. This function is mainly useful for tracking and debugging memory leaks. Because of the interpreter’s internal caches, the result can vary from call to call; you may have to call `_clear_internal_caches()` and `gc.collect()` to get more predictable results.

  If a Python build or implementation cannot reasonably compute this information, `getallocatedblocks()` is allowed to return 0 instead.

  Added in version 3.4.

sys.getunicodeinternedsize()

  Return the number of unicode objects that have been interned.

  Added in version 3.12.

sys.getandroidapilevel()

  Return the build-time API level of Android as an integer. This represents the minimum version of Android this build of Python can run on. For runtime version information, see `platform.android_ver()`.

  Availability: Android.

  Added in version 3.7.

sys.getdefaultencoding()

  Return `'utf-8'`. This is the name of the default string encoding, used in methods like `str.encode()`.

sys.getdlopenflags()

  Return the current value of the flags that are used for `dlopen()` calls. Symbolic names for the flag values can be found in the `os` module (`RTLD_xxx` constants, e.g. `os.RTLD_LAZY`).

  Availability: Unix.

sys.getfilesystemencoding()

  Get the filesystem encoding: the encoding used with the filesystem error handler to convert between Unicode filenames and bytes filenames. The filesystem error handler is returned from `getfilesystemencodeerrors()`.

  Для найкращої сумісності str слід використовувати для імен файлів у всіх випадках, хоча представлення імен файлів у вигляді байтів також підтримується. Функції, що приймають або повертають імена файлів, повинні підтримувати str або bytes і внутрішньо конвертувати до бажаного представлення системи.

  `os.fsencode()` і `os.fsdecode()` слід використовувати, щоб переконатися, що використовується правильне кодування та режим помилок.

  filesystem encoding and error handler налаштовуються під час запуску Python за допомогою функції `PyConfig_Read()`: див. `filesystem_encoding` і `filesystem_errors` члени `PyConfig`.

  Змінено в версії 3.2: Результат `getfilesystemencoding()` більше не може бути `None`.

  Змінено в версії 3.6: Windows is no longer guaranteed to return `'mbcs'`. See PEP 529 for more information.

  Змінено в версії 3.7: Повертає `'utf-8''`, якщо Python UTF-8 Mode увімкнено.

sys.getfilesystemencodeerrors()

  Отримайте обробник помилок файлової системи: обробник помилок, який використовується з кодуванням файлової системи для перетворення між іменами файлів Unicode та іменами файлів байтів. Кодування файлової системи повертається з `getfilesystemencoding()`.

  `os.fsencode()` і `os.fsdecode()` слід використовувати, щоб переконатися, що використовується правильне кодування та режим помилок.

  filesystem encoding and error handler налаштовуються під час запуску Python за допомогою функції `PyConfig_Read()`: див. `filesystem_encoding` і `filesystem_errors` члени `PyConfig`.

  Added in version 3.6.

sys.get_int_max_str_digits()

  Returns the current value for the integer string conversion length limitation. See also `set_int_max_str_digits()`.

  Added in version 3.11.

sys.get_lazy_imports()

  Returns the current lazy imports mode as a string.

  - `"normal"`: Only imports explicitly marked with the `lazy` keyword are lazy

  - `"all"`: All top-level imports are potentially lazy

  See also `set_lazy_imports()` and PEP 810.

  Added in version 3.15.

sys.get_lazy_imports_filter()

  Returns the current lazy imports filter function, or `None` if no filter is set.

  The filter function is called for every potentially lazy import to determine whether it should actually be lazy. See `set_lazy_imports_filter()` for details on the filter function signature.

  Added in version 3.15.

sys.getrefcount(object)

  Повертає кількість посилань на об’єкт. Лічильник, який повертається, зазвичай на одиницю більший, ніж ви могли б очікувати, оскільки він включає (тимчасове) посилання як аргумент для `getrefcount()`.

  Note that the returned value may not actually reflect how many references to the object are actually held. For example, some objects are immortal and have a very high refcount that does not reflect the actual number of references. Consequently, do not rely on the returned value to be accurate, other than a value of 0 or 1.

  Деталі реалізації CPython: Immortal objects with a large reference count can be identified via `_is_immortal()`.

  Змінено в версії 3.12: Immortal objects have very large refcounts that do not match the actual number of references to the object.

sys.getrecursionlimit()

  Повертає поточне значення обмеження рекурсії, максимальну глибину стека інтерпретатора Python. Це обмеження запобігає нескінченній рекурсії від переповнення стека C і збою Python. Його можна встановити за допомогою `setrecursionlimit()`.

sys.getsizeof(object[, default])

  Повертає розмір об’єкта в байтах. Об’єктом може бути будь-який тип об’єкта. Усі вбудовані об’єкти повертатимуть правильні результати, але це не обов’язково стосується сторонніх розширень, оскільки це залежить від реалізації.

  Враховується лише споживання пам’яті, безпосередньо пов’язане з об’єктом, а не споживання пам’яті об’єктами, на які він посилається.

  Якщо задано, default буде повернуто, якщо об’єкт не надає засобів для отримання розміру. Інакше буде викликано `TypeError`.

  `getsizeof()` викликає метод об’єкта `__sizeof__` і додає додаткові накладні витрати на збирач сміття, якщо об’єктом керує збирач сміття.

  See recursive sizeof recipe for an example of using `getsizeof()` recursively to find the size of containers and all their contents.

sys.getswitchinterval()

  Return the interpreter’s «thread switch interval» in seconds; see `setswitchinterval()`.

  Added in version 3.2.

sys._getframe([depth])

  Повернути об’єкт кадру зі стеку викликів. Якщо задано необов’язкове ціле число depth, поверніть об’єкт фрейму, який багато викликає, нижче верхньої частини стека. Якщо це глибше, ніж стек викликів, виникає `ValueError`. За замовчуванням для depth дорівнює нулю, повертаючи кадр у верхній частині стека викликів.

  Raises an auditing event `sys._getframe` with argument `frame`.

  Цю функцію слід використовувати лише для внутрішніх і спеціальних цілей. Не гарантовано його існування у всіх реалізаціях Python.

sys._getframemodulename([depth])

  Return the name of a module from the call stack. If optional integer depth is given, return the module that many calls below the top of the stack. If that is deeper than the call stack, or if the module is unidentifiable, `None` is returned. The default for depth is zero, returning the module at the top of the call stack.

  Raises an auditing event `sys._getframemodulename` with argument `depth`.

  Цю функцію слід використовувати лише для внутрішніх і спеціальних цілей. Не гарантовано його існування у всіх реалізаціях Python.

  Added in version 3.12.

sys.getobjects(limit[, type])

  This function only exists if CPython was built using the specialized configure option `--with-trace-refs`. It is intended only for debugging garbage-collection issues.

  Return a list of up to limit dynamically allocated Python objects. If type is given, only objects of that exact type (not subtypes) are included.

  Objects from the list are not safe to use. Specifically, the result will include objects from all interpreters that share their object allocator state (that is, ones created with `PyInterpreterConfig.use_main_obmalloc` set to 1 or using `Py_NewInterpreter()`, and the main interpreter). Mixing objects from different interpreters may lead to crashes or other unexpected behavior.

  Деталі реалізації CPython: This function should be used for specialized purposes only. It is not guaranteed to exist in all implementations of Python.

  Змінено в версії 3.14: The result may include objects from other interpreters.

sys.getprofile()

  Отримайте функцію профайлера, встановлену `setprofile()`.

sys.gettrace()

  Отримайте функцію трасування, встановлену `settrace()`.

  Функція `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 will be `2` (VER_PLATFORM_WIN32_NT).

  product_type може бути одним із таких значень:

  Постійний | Значення
  --- | ---
  `1` (VER_NT_WORKSTATION) | Система являє собою робочу станцію.
  `2` (VER_NT_DOMAIN_CONTROLLER) | Система є контролером домену.
  `3` (VER_NT_SERVER) | Система є сервером, але не контролером домену.

  This function wraps the Win32 `GetVersionEx()` function; see the Microsoft documentation on `OSVERSIONINFOEX()` for more information about these fields.

  platform_version повертає основну версію, проміжну версію та номер збірки поточної операційної системи, а не версію, яка емулюється для процесу. Він призначений для використання в журналі, а не для виявлення функцій.

  Примітка

  platform_version отримує версію з kernel32.dll, версія якої може відрізнятися від версії ОС. Будь ласка, використовуйте модуль `platform` для отримання точної версії ОС.

  Availability: Windows.

  Змінено в версії 3.2: Змінено на іменований кортеж і додано service_pack_minor, service_pack_major, suite_mask і product_type.

  Змінено в версії 3.6: Додано версію_платформи

sys.get_asyncgen_hooks()

  Returns an asyncgen_hooks object, which is similar to a `namedtuple` of the form `(firstiter, finalizer)`, where firstiter and finalizer are expected to be either `None` or functions which take an asynchronous generator iterator as an argument, and are used to schedule finalization of an asynchronous generator by an event loop.

  Added in version 3.6: Дивіться PEP 525 для більш детальної інформації.

  Примітка

  Цю функцію додано тимчасово (докладніше див. PEP 411).

sys.get_coroutine_origin_tracking_depth()

  Отримати поточну глибину відстеження джерела співпрограми, встановлену `set_coroutine_origin_tracking_depth()`.

  Added in version 3.7.

  Примітка

  Цю функцію додано на тимчасовій основі (докладніше див. PEP 411). Використовуйте її лише для налагодження.

sys.hash_info

  named tuple, що надає параметри реалізації числового хешу. Докладніше про хешування числових типів див. Хешування числових типів.

  hash_info.width

    The width in bits used for hash values

  hash_info.modulus

    The prime modulus P used for numeric hash scheme

  hash_info.inf

    The hash value returned for a positive infinity

  hash_info.nan

    (This attribute is no longer used)

  hash_info.imag

    The multiplier used for the imaginary part of a complex number

  hash_info.algorithm

    The name of the algorithm for hashing of str, bytes, and memoryview

  hash_info.hash_bits

    The internal output size of the hash algorithm

  hash_info.seed_bits

    The size of the seed key of the hash algorithm

  hash_info.cutoff

    Cutoff for small string DJBX33A optimization in range `[1, cutoff)`.

  Added in version 3.2.

  Змінено в версії 3.4: Added algorithm, hash_bits, seed_bits, and cutoff.

sys.hexversion

  Номер версії, закодований як одне ціле число. Це гарантовано зростатиме з кожною версією, включаючи належну підтримку невиробничих випусків. Наприклад, щоб перевірити, що інтерпретатор Python має принаймні версію 1.5.2, використовуйте:

      if sys.hexversion >= 0x010502F0:
          # use some advanced feature
          ...
      else:
          # use an alternative implementation or warn the user
          ...

  Це називається `hexversion`, оскільки воно справді виглядає значущим лише тоді, коли розглядається як результат передачі його у вбудовану функцію `hex()`. named tuple `sys.version_info` можна використовувати для більш зручного для людини кодування тієї самої інформації.

  Більш детальну інформацію про `hexversion` можна знайти на Керування версіями API та ABI.

sys.implementation

  Об’єкт, що містить інформацію про реалізацію поточного інтерпретатора Python. Наступні атрибути повинні існувати в усіх реалізаціях Python.

  ім’я – це ідентифікатор реалізації, напр. `'cpython'`. Фактичний рядок визначається реалізацією Python, але він гарантовано буде написаний у нижньому регістрі.

  version — це іменований кортеж у тому самому форматі, що й `sys.version_info`. Він представляє версію реалізації Python. Це має відмінне значення від конкретної версії мови Python, якій відповідає поточний інтерпретатор, який представляє `sys.version_info`. Наприклад, для PyPy 1.8 `sys.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`, це вказує на те, що кешування модуля має бути вимкнено.

  supports_isolated_interpreters is a boolean value, whether this implementation supports multiple isolated interpreters. It is `True` for CPython on most platforms. Platforms with this support implement the low-level `_interpreters` module.

  Дивись також

  PEP 684, PEP 734, and `concurrent.interpreters`.

  `sys.implementation` може містити додаткові атрибути, характерні для реалізації Python. Ці нестандартні атрибути мають починатися з підкреслення та тут не описані. Незалежно від його вмісту, `sys.implementation` не змінюватиметься ні під час роботи інтерпретатора, ні між версіями реалізації. (Однак він може змінюватися між версіями мови Python.) Додаткову інформацію див. PEP 421.

  Added in version 3.3.

  Змінено в версії 3.14: Added `supports_isolated_interpreters` field.

  Примітка

  Додавання нових необхідних атрибутів має проходити через звичайний процес PEP. Перегляньте PEP 421 для отримання додаткової інформації.

sys.int_info

  named tuple, який містить інформацію про внутрішнє представлення цілих чисел у Python. Атрибути доступні лише для читання.

  int_info.bits_per_digit

    The number of bits held in each digit. Python integers are stored internally in base `2**int_info.bits_per_digit`.

  int_info.sizeof_digit

    The size in bytes of the C type used to represent a digit.

  int_info.default_max_str_digits

    The default value for `sys.get_int_max_str_digits()` when it is not otherwise explicitly configured.

  int_info.str_digits_check_threshold

    The minimum non-zero value for `sys.set_int_max_str_digits()`, `PYTHONINTMAXSTRDIGITS`, or `-X int_max_str_digits`.

  Added in version 3.1.

  Змінено в версії 3.11: Added `default_max_str_digits` and `str_digits_check_threshold`.

sys.__interactivehook__

  Якщо цей атрибут існує, його значення викликається автоматично (без аргументів), коли інтерпретатор запускається в інтерактивному режимі. Це робиться після того, як файл `PYTHONSTARTUP` буде прочитано, щоб ви могли встановити цей хук там. Модуль `site` встановлює цей.

  Викликає подію аудиту `cpython.run_interactivehook` з об’єктом підхоплення як аргумент, коли підхоплення викликається під час запуску.

  Added in version 3.4.

sys.intern(string)

  Введіть рядок у таблицю «інтернованих» рядків і поверніть інтернований рядок, який є самим рядком або копією. Інтернування рядків корисне для підвищення продуктивності пошуку в словнику — якщо ключі в словнику інтерновані, а ключ пошуку інтернований, порівняння ключів (після хешування) можна виконувати за допомогою порівняння вказівників замість порівняння рядків. Зазвичай імена, які використовуються в програмах Python, автоматично інтернуються, а словники, які використовуються для зберігання атрибутів модуля, класу чи екземпляра, мають інтерновані ключі.

  Interned strings are not immortal; you must keep a reference to the return value of `intern()` around to benefit from it.

sys._is_gil_enabled()

  Return `True` if the GIL is enabled and `False` if it is disabled.

  Added in version 3.13.

  Деталі реалізації CPython: It is not guaranteed to exist in all implementations of Python.

sys.is_finalizing()

  Return `True` if the main Python interpreter is shutting down. Return `False` otherwise.

  See also the `PythonFinalizationError` exception.

  Added in version 3.5.

sys._jit

  Utilities for observing just-in-time compilation.

  Деталі реалізації CPython: JIT compilation is an experimental implementation detail of CPython. `sys._jit` is not guaranteed to exist or behave the same way in all Python implementations, versions, or build configurations.

  Added in version 3.14.

  _jit.is_available()

    Return `True` if the current Python executable supports JIT compilation, and `False` otherwise. This can be controlled by building CPython with the `--experimental-jit` option on Windows, and the `--enable-experimental-jit` option on all other platforms.

  _jit.is_enabled()

    Return `True` if JIT compilation is enabled for the current Python process (implies `sys._jit.is_available()`), and `False` otherwise. If JIT compilation is available, this can be controlled by setting the `PYTHON_JIT` environment variable to `0` (disabled) or `1` (enabled) at interpreter startup.

  _jit.is_active()

    Return `True` if the topmost Python frame is currently executing JIT code (implies `sys._jit.is_enabled()`), and `False` otherwise.

    Примітка

    This function is intended for testing and debugging the JIT itself. It should be avoided for any other purpose.

    Примітка

    Due to the nature of tracing JIT compilers, repeated calls to this function may give surprising results. For example, branching on its return value will likely lead to unexpected behavior (if doing so causes JIT code to be entered or exited):

        >>> for warmup in range(BIG_NUMBER):
        ...     # This line is "hot", and is eventually JIT-compiled:
        ...     if sys._jit.is_active():
        ...         # This line is "cold", and is run in the interpreter:
        ...         assert sys._jit.is_active()
        ...
        Traceback (most recent call last):
          File "<stdin>", line 5, in <module>
            assert sys._jit.is_active()
                   ~~~~~~~~~~~~~~~~~~^^
        AssertionError

sys.last_exc

  This variable is not always defined; it is set to the exception instance when an exception is not handled and the interpreter prints an error message and a stack traceback. Its intended use is to allow an interactive user to import a debugger module and engage in post-mortem debugging without having to re-execute the command that caused the error. (Typical use is `import pdb; pdb.pm()` to enter the post-mortem debugger; see `pdb` module for more information.)

  Added in version 3.12.

sys._is_immortal(op)

  Return `True` if the given object is immortal, `False` otherwise.

  Примітка

  Objects that are immortal (and thus return `True` upon being passed to this function) are not guaranteed to be immortal in future versions, and vice versa for mortal objects.

  Added in version 3.14.

  Деталі реалізації CPython: This function should be used for specialized purposes only. It is not guaranteed to exist in all implementations of Python.

sys._is_interned(string)

  Return `True` if the given string is «interned», `False` otherwise.

  Added in version 3.13.

  Деталі реалізації CPython: It is not guaranteed to exist in all implementations of Python.

sys.last_type
sys.last_value
sys.last_traceback

  These three variables are deprecated; use `sys.last_exc` instead. They hold the legacy representation of `sys.last_exc`, as returned from `exc_info()` above.

sys.maxsize

  Ціле число, яке дає максимальне значення, яке може приймати змінна типу `Py_ssize_t`. Зазвичай це `2**31 - 1` на 32-розрядній платформі та `2**63 - 1` на 64-розрядній платформі.

sys.maxunicode

  Ціле число, яке вказує значення найбільшої кодової точки Юнікоду, наприклад `1114111` (`0x10FFFF` у шістнадцятковій системі).

  Змінено в версії 3.3: До PEP 393, `sys.maxunicode` використовувався або `0xFFFF`, або `0x10FFFF`, залежно від параметра конфігурації, який вказував, чи зберігаються символи Unicode як UCS-2 або UCS- 4.

sys.meta_path

  A list of meta path finder objects that have their `find_spec()` methods called to see if one of the objects can find the module to be imported. By default, it holds entries that implement Python’s default import semantics. The `find_spec()` method is called with at least the absolute name of the module being imported. If the module to be imported is contained in a package, then the parent package’s `__path__` attribute is passed in as a second argument. The method returns a module spec, or `None` if the module cannot be found.

  Дивись також

  `importlib.abc.MetaPathFinder`

    Абстрактний базовий клас, що визначає інтерфейс об’єктів пошуку на `meta_path`.

  `importlib.machinery.ModuleSpec`

    Конкретний клас, який `find_spec()` має повертати екземпляри.

  Змінено в версії 3.4: Module specs were introduced in Python 3.4, by PEP 451.

  Змінено в версії 3.12: Removed the fallback that looked for a `find_module()` method if a `meta_path` entry didn’t have a `find_spec()` method.

sys.modules

  Це словник, який зіставляє назви модулів із уже завантаженими модулями. Цим можна маніпулювати, щоб примусово перезавантажувати модулі та виконувати інші трюки. Однак заміна словника не обов’язково працюватиме належним чином, а видалення важливих елементів зі словника може призвести до збою Python. Якщо ви хочете повторити цей глобальний словник, завжди використовуйте `sys.modules.copy()` або `tuple(sys.modules)`, щоб уникнути винятків, оскільки його розмір може змінюватися під час ітерації як побічний ефект коду або діяльність в інших потоках.

sys.orig_argv

  Список оригінальних аргументів командного рядка, переданих у виконуваний файл Python.

  The elements of `sys.orig_argv` are the arguments to the Python interpreter, while the elements of `sys.argv` are the arguments to the user’s program. Arguments consumed by the interpreter itself will be present in `sys.orig_argv` and missing from `sys.argv`.

  Added in version 3.10.

sys.path

  Список рядків, який визначає шлях пошуку для модулів. Ініціалізується зі змінної середовища `PYTHONPATH`, плюс значення за умовчанням, що залежить від встановлення.

  By default, as initialized upon program startup, a potentially unsafe path is prepended to `sys.path` (before the entries inserted as a result of `PYTHONPATH`):

  - `python -m module` command line: prepend the current working directory.

  - `python script.py` command line: prepend the script’s directory. If it’s a symbolic link, resolve symbolic links.

  - `python -c code` and `python` (REPL) command lines: prepend an empty string, which means the current working directory.

  To not prepend this potentially unsafe path, use the `-P` command line option or the `PYTHONSAFEPATH` environment variable.

  A program is free to modify this list for its own purposes. Only strings should be added to `sys.path`; all other data types are ignored during import.

  Дивись також

  - Модуль `site` Тут описано, як використовувати файли .pth для розширення `sys.path`.

sys.path_hooks

  Список викликів, які приймають аргумент path, щоб спробувати створити finder для шляху. Якщо засіб пошуку можна створити, його має повернути виклик, інакше викликається `ImportError`.

  Спочатку вказано в PEP 302.

sys.path_importer_cache

  Словник, що діє як кеш для об’єктів finder. Ключі – це шляхи, які були передані до `sys.path_hooks`, а значення – це знайдені шукачі. Якщо шлях є дійсним шляхом у файловій системі, але в `sys.path_hooks` не знайдено засобу пошуку, тоді зберігається значення «Немає».

  Спочатку вказано в PEP 302.

sys.platform

  A string containing a platform identifier. Known values are:

  система | значення `платформи`
  --- | ---
  AIX | `'aix'`
  Android | `'android'`
  Emscripten | `'emscripten'`
  FreeBSD | `'freebsd'`
  iOS | `'ios'`
  Linux | `'linux'`
  macOS | `''дарвін'`
  вікна | `'win32'`
  Windows/Cygwin | `'cygwin'`
  WASI | `'wasi'`

  On Unix systems not listed in the table, the value is the lowercased OS name as returned by `uname -s`, with the first part of the version as returned by `uname -r` appended, e.g. `'sunos5'`, at the time when Python was built. Unless you want to test for a specific system version, it is therefore recommended to use the following idiom:

      if sys.platform.startswith('sunos'):
          # SunOS-specific code here...

  Змінено в версії 3.3: On Linux, `sys.platform` doesn’t contain the major version anymore. It is always `'linux'`, instead of `'linux2'` or `'linux3'`.

  Змінено в версії 3.8: On AIX, `sys.platform` doesn’t contain the major version anymore. It is always `'aix'`, instead of `'aix5'` or `'aix7'`.

  Змінено в версії 3.13: On Android, `sys.platform` now returns `'android'` rather than `'linux'`.

  Змінено в версії 3.14: On FreeBSD, `sys.platform` doesn’t contain the major version anymore. It is always `'freebsd'`, instead of `'freebsd13'` or `'freebsd14'`.

  Дивись також

  `os.name` has a coarser granularity. `os.uname()` gives system-dependent version information.

  Модуль `platform` забезпечує детальну перевірку ідентичності системи.

sys.platlibdir

  Назва каталогу бібліотеки для конкретної платформи. Використовується для побудови шляху стандартної бібліотеки та шляхів встановлених модулів розширення.

  На більшості платформ він дорівнює `"lib"`. У Fedora та SuSE він дорівнює `"lib64"` на 64-розрядних платформах, що дає такі шляхи `sys.path` (де `X.Y` є `major.minor` Python версія):

  - `/usr/lib64/pythonX.Y/`: Стандартна бібліотека (наприклад, `os.py` модуля `os`)

  - `/usr/lib64/pythonX.Y/lib-dynload/`: модулі розширення C стандартної бібліотеки (наприклад, модуль `errno`, точна назва файлу залежить від платформи)

  - `/usr/lib/pythonX.Y/site-packages/` (завжди використовуйте `lib`, а не `sys.platlibdir`): сторонні модулі

  - `/usr/lib64/pythonX.Y/site-packages/`: модулі розширення C пакетів сторонніх розробників

  Added in version 3.9.

sys.prefix

  A string giving the site-specific directory prefix where the platform independent Python files are installed; on Unix, the default is `/usr/local`. This can be set at build time with the `--prefix` argument to the configure script. See Шляхи встановлення for derived paths.

  Примітка

  If a virtual environment is in effect, this `prefix` will point to the virtual environment. The value for the Python installation will still be available, via `base_prefix`. Refer to Virtual Environments for more information.

  Змінено в версії 3.14: When running under a virtual environment, `prefix` and `exec_prefix` are now set to the virtual environment prefix by the path initialization, instead of `site`. This means that `prefix` and `exec_prefix` always point to the virtual environment, even when `site` is disabled (`-S`).

sys.ps1
sys.ps2

  Рядки, що вказують основну та додаткову підказки інтерпретатора. Вони визначаються, лише якщо інтерпретатор перебуває в інтерактивному режимі. Їх початковими значеннями в цьому випадку є `'>>> '` і `'... '`. Якщо будь-якій змінній присвоєно нерядковий об’єкт, його `str()` переоцінюється щоразу, коли інтерпретатор готується прочитати нову інтерактивну команду; це можна використовувати для реалізації динамічного підказки.

sys.setdlopenflags(n)

  Set the flags used by the interpreter for `dlopen()` calls, such as when the interpreter loads extension modules. Among other things, this will enable a lazy resolving of symbols when importing a module, if called as `sys.setdlopenflags(0)`. To share symbols across extension modules, call as `sys.setdlopenflags(os.RTLD_GLOBAL)`. Symbolic names for the flag values can be found in the `os` module (`RTLD_xxx` constants, e.g. `os.RTLD_LAZY`).

  Availability: Unix.

sys.set_int_max_str_digits(maxdigits)

  Set the integer string conversion length limitation used by this interpreter. See also `get_int_max_str_digits()`.

  Added in version 3.11.

sys.set_lazy_imports(mode)

  Sets the global lazy imports mode. The mode parameter must be one of the following strings:

  - `"normal"`: Only imports explicitly marked with the `lazy` keyword are lazy

  - `"all"`: All top-level imports become potentially lazy

  This function is intended for advanced users who need to control lazy imports across their entire application. Library developers should generally not use this function as it affects the runtime execution of applications.

  In addition to the mode, lazy imports can be controlled via the filter provided by `set_lazy_imports_filter()`.

  See also `get_lazy_imports()` and PEP 810.

  Added in version 3.15.

sys.set_lazy_imports_filter(filter)

  Sets the lazy imports filter callback. The filter parameter must be a callable or `None` to clear the filter.

  The filter function is called for every potentially lazy import to determine whether it should actually be lazy. It must have the following signature:

      def filter(importing_module: str, imported_module: str,
                 fromlist: tuple[str, ...] | None) -> bool

  Where:

  - importing_module is the name of the module doing the import

  - imported_module is the resolved name of the module being imported (for example, `lazy from .spam import eggs` passes `package.spam`)

  - fromlist is the tuple of names being imported (for `from ... import` statements), or `None` for regular imports

  The filter should return `True` to allow the import to be lazy, or `False` to force an eager import.

  This is an advanced feature intended for specialized users who need fine-grained control over lazy import behavior.

  See also `get_lazy_imports_filter()` and PEP 810.

  Added in version 3.15.

sys.setprofile(profilefunc)

  Встановіть функцію профілю системи, яка дозволяє реалізувати профайлер вихідного коду Python у Python. Перегляньте розділ profile — Pure Python profiler для отримання додаткової інформації про профайлер Python. Функція профілю системи викликається подібно до функції трасування системи (див. `settrace()`), але вона викликається з різними подіями, наприклад, вона не викликається для кожного виконаного рядка коду (тільки під час виклику та повернення, але подія повернення повідомляється, навіть якщо встановлено виняток). Ця функція залежить від потоку, але профайлер не може дізнатися про перемикання контексту між потоками, тому немає сенсу використовувати це за наявності кількох потоків. Крім того, його повертане значення не використовується, тому воно може просто повернути `None`. Помилка у функції профілю призведе до самої неналаштування.

  Примітка

  The same tracing mechanism is used for `setprofile()` as `settrace()`. To trace calls with `setprofile()` inside a tracing function (e.g. in a debugger breakpoint), see `call_tracing()`.

  Функції профілю повинні мати три аргументи: frame, event і arg. frame — поточний кадр стека. подія — це рядок: `'call'`, `'return'`, `'c_call'`, `'c_return'` або `'c_exception'`. arg залежить від типу події.

  Події мають таке значення:

  `'дзвінок'`

    Викликається функція (або вводиться інший блок коду). Функція профілю викликається; arg — це `None`.

  `'повернення'`

    Функція (або інший блок коду) збирається повернутися. Функція профілю викликається; arg — це значення, яке буде повернуто, або `None`, якщо подія спричинена винятковою ситуацією.

  `'c_call'`

    Ось-ось буде викликана функція C. Це може бути функція розширення або вбудована. arg — об’єкт функції C.

  `'c_return'`

    Функція C повернулася. arg — об’єкт функції C.

  `'c_виняток'`

    Функція C викликала виняток. arg — об’єкт функції C.

  Викликає подію аудиту `sys.setprofile` без аргументів.

sys.setrecursionlimit(limit)

  Встановіть максимальну глибину стека інтерпретатора Python на limit. Це обмеження запобігає нескінченній рекурсії від переповнення стека C і збою Python.

  Найвищий можливий ліміт залежить від платформи. Користувачеві може знадобитися встановити вищий ліміт, якщо у нього є програма, яка потребує глибокої рекурсії, і платформа, яка підтримує вищий ліміт. Це слід робити обережно, тому що занадто високий ліміт може призвести до збою.

  Якщо новий ліміт занизький для поточної глибини рекурсії, виникає виняток `RecursionError`.

  Змінено в версії 3.5.1: Виняток `RecursionError` тепер викликається, якщо нове обмеження занизьке на поточній глибині рекурсії.

sys.setswitchinterval(interval)

  Встановити інтервал перемикання потоків інтерпретатора (у секундах). Це значення з плаваючою комою визначає ідеальну тривалість «часових інтервалів», виділених одночасно запущеним потокам Python. Зверніть увагу, що фактичне значення може бути вищим, особливо якщо використовуються довгострокові внутрішні функції або методи. Крім того, операційна система вирішує, який потік буде заплановано в кінці інтервалу. Інтерпретатор не має власного планувальника.

  Added in version 3.2.

sys.settrace(tracefunc)

  Налаштуйте функцію трасування системи, яка дозволяє реалізувати налагоджувач вихідного коду Python у Python. Функція залежить від потоку; щоб налагоджувач підтримував кілька потоків, він повинен зареєструвати функцію трасування за допомогою `settrace()` для кожного потоку, який налагоджується, або використовувати `threading.settrace()`.

  Trace functions should have three arguments: frame, event, and arg. frame is the current stack frame. event is a string: `'call'`, `'line'`, `'return'`, `'exception'` or `'opcode'`. arg depends on the event type.

  Функція трасування викликається (з event встановленим на `'call'`) кожного разу, коли вводиться нова локальна область; він повинен повертати посилання на локальну функцію трасування, яка буде використана для нової області, або `None`, якщо область не повинна відстежуватися.

  The local trace function should return a reference to itself, or to another function which would then be used as the local trace function for the scope.

  Якщо у функції відстеження сталася будь-яка помилка, вона буде скинута, як і виклик `settrace(None)`.

  Примітка

  Tracing is disabled while calling the trace function (e.g. a function set by `settrace()`). For recursive tracing see `call_tracing()`.

  Події мають таке значення:

  `'дзвінок'`

    Викликається функція (або вводиться інший блок коду). Глобальна функція трасування називається; arg є `None`; значення, що повертається, визначає локальну функцію трасування.

  `''рядок'`

    The interpreter is about to execute a new line of code or re-execute the condition of a loop. The local trace function is called; arg is `None`; the return value specifies the new local trace function. See `Objects/lnotab_notes.txt` for a detailed explanation of how this works. Per-line events may be disabled for a frame by setting `f_trace_lines` to `False` on that frame.

  `'повернення'`

    Функція (або інший блок коду) збирається повернутися. Викликається функція локального трасування; arg — це значення, яке буде повернуто, або `None`, якщо подія спричинена винятковою ситуацією. Повернене значення функції трасування ігнорується.

  `'виняток'`

    Стався виняток. Викликається функція локального трасування; arg — це кортеж `(виключення, значення, відстеження)`; значення, що повертається, визначає нову локальну функцію трасування.

  `'код операції'`

    The interpreter is about to execute a new opcode (see `dis` for opcode details). The local trace function is called; arg is `None`; the return value specifies the new local trace function. Per-opcode events are not emitted by default: they must be explicitly requested by setting `f_trace_opcodes` to `True` on the frame.

  Зауважте, що коли виняткова ситуація поширюється вниз по ланцюжку абонентів, на кожному рівні генерується подія `'виняток'`.

  Для більш точного використання можна встановити функцію трасування, призначивши `frame.f_trace = tracefunc` явно, замість того, щоб покладатися на її встановлення опосередковано через значення, яке повертає вже встановлена функція трасування. Це також потрібно для активації функції трасування поточного кадру, чого `settrace()` не робить. Зауважте, що для того, щоб це працювало, глобальна функція трасування має бути встановлена разом із `settrace()`, щоб увімкнути механізм трасування під час виконання, але це не обов’язково має бути та сама функція трасування (наприклад, це може бути функція відстеження низьких накладних витрат, яка просто повертає `None`, щоб негайно вимкнути себе в кожному кадрі).

  Для отримання додаткової інформації про код і об’єкти фрейму зверніться до Стандартна ієрархія типів.

  Викликає подію аудиту `sys.settrace` без аргументів.

  Функція `settrace()` призначена лише для реалізації налагоджувачів, профайлерів, інструментів покриття тощо. Його поведінка є частиною платформи реалізації, а не частиною визначення мови, і тому може бути недоступною в усіх реалізаціях Python.

  Змінено в версії 3.7: `'opcode'` event type added; `f_trace_lines` and `f_trace_opcodes` attributes added to frames

sys.set_asyncgen_hooks([firstiter] [, finalizer])

  Приймає два необов’язкові аргументи ключових слів, які викликаються та приймають asynchronous generator iterator як аргумент. Викликаний firstiter буде викликаний, коли асинхронний генератор повторюється вперше. Finalizer буде викликано, коли асинхронний генератор збирається зібрати сміття.

  Викликає подію аудиту `sys.set_asyncgen_hooks_firstiter` без аргументів.

  Викликає подію аудиту `sys.set_asyncgen_hooks_finalizer` без аргументів.

  Викликаються дві події аудиту, оскільки базовий API складається з двох викликів, кожен із яких має викликати власну подію.

  Added in version 3.6: Перегляньте PEP 525 для отримання додаткової інформації, а для довідкового прикладу методу finalizer див. реалізацію `asyncio.Loop.shutdown_asyncgens` у Lib/asyncio/base_events.py

  Примітка

  Цю функцію додано тимчасово (докладніше див. PEP 411).

sys.set_coroutine_origin_tracking_depth(depth)

  Allows enabling or disabling coroutine origin tracking. When enabled, the `cr_origin` attribute on coroutine objects will contain a tuple of (filename, line number, function name) tuples describing the traceback where the coroutine object was created, with the most recent call first. When disabled, `cr_origin` will be `None`.

  To enable, pass a depth value greater than zero; this sets the number of frames whose information will be captured. To disable, set depth to zero.

  Це налаштування залежить від потоку.

  Added in version 3.7.

  Примітка

  Цю функцію додано на тимчасовій основі (докладніше див. PEP 411). Використовуйте її лише для налагодження.

sys.activate_stack_trampoline(backend, /)

  Activate the stack profiler trampoline backend. The only supported backend is `"perf"`.

  Stack trampolines cannot be activated if the JIT is active.

  Availability: Linux.

  Added in version 3.12.

  Дивись також

  - Python support for the perf map compatible profilers

  - https://perf.wiki.kernel.org

sys.deactivate_stack_trampoline()

  Deactivate the current stack profiler trampoline backend.

  If no stack profiler is activated, this function has no effect.

  Availability: Linux.

  Added in version 3.12.

sys.is_stack_trampoline_active()

  Return `True` if a stack profiler trampoline is active.

  Availability: Linux.

  Added in version 3.12.

sys.remote_exec(pid, script)

  Executes script, a file containing Python code in the remote process with the given pid.

  This function returns immediately, and the code will be executed by the target process’s main thread at the next available opportunity, similarly to how signals are handled. There is no interface to determine when the code has been executed. The caller is responsible for making sure that the file still exists whenever the remote process tries to read it and that it hasn’t been overwritten.

  The remote process must be running a CPython interpreter of the same major and minor version as the local process. If either the local or remote interpreter is pre-release (alpha, beta, or release candidate) then the local and remote interpreters must be the same exact version.

  See Remote debugging attachment protocol for more information about the remote debugging mechanism.

  When the code is executed in the remote process, an auditing event `sys.remote_exec` is raised with the pid and the path to the script file. This event is raised in the process that called `sys.remote_exec()`.

  When the script is executed in the remote process, an auditing event `cpython.remote_debugger_script` is raised with the path in the remote process. This event is raised in the remote process, not the one that called `sys.remote_exec()`.

  Availability: Unix, Windows.

  Added in version 3.14: See PEP 768 for more details.

sys.stdin
sys.stdout
sys.stderr

  Файлові об’єкти, які використовуються інтерпретатором для стандартного введення, виведення та помилок:

  - `stdin` використовується для всього інтерактивного введення (включаючи виклики `input()`);

  - `stdout` використовується для виведення операторів `print()` і expression і для підказок `input()`;

  - Власні підказки інтерпретатора та його повідомлення про помилки надходять до `stderr`.

  Ці потоки є звичайними текстовими файлами, як ті, що повертаються функцією `open()`. Їх параметри вибираються наступним чином:

  - Кодування та обробка помилок ініціалізуються з `PyConfig.stdio_encoding` і `PyConfig.stdio_errors`.

    У Windows для консольного пристрою використовується UTF-8. Несимвольні пристрої, такі як дискові файли та канали, використовують системне кодування локалі (тобто кодову сторінку ANSI). Неконсольні символьні пристрої, такі як NUL (тобто де `isatty()` повертає `True`), використовують значення кодових сторінок консолі вводу та виводу під час запуску відповідно для stdin та stdout/stderr. За замовчуванням використовується системне locale encoding, якщо процес спочатку не приєднано до консолі.

    Спеціальну поведінку консолі можна змінити, встановивши змінну середовища PYTHONLEGACYWINDOWSSTDIO перед запуском Python. У цьому випадку кодові сторінки консолі використовуються як для будь-якого іншого символьного пристрою.

    На всіх платформах ви можете змінити кодування символів, встановивши змінну середовища `PYTHONIOENCODING` перед запуском Python або використовуючи новий параметр командного рядка `-X` `utf8` і `PYTHONUTF8` змінна середовища. Однак для консолі Windows це стосується лише коли `PYTHONLEGACYWINDOWSSTDIO` також встановлено.

  - У інтерактивному режимі потік `stdout` буферизується в рядках. В іншому випадку він буферизується блоками, як звичайні текстові файли. Потік `stderr` буферизується в обох випадках. Ви можете зробити обидва потоки небуферизованими, передавши параметр командного рядка `-u` або встановивши змінну середовища `PYTHONUNBUFFERED`.

  Змінено в версії 3.9: Неінтерактивний `stderr` тепер буферизується рядками замість повної буферизації.

  Примітка

  Щоб записати або прочитати двійкові дані з/до стандартних потоків, використовуйте базовий двійковий об’єкт `buffer`. Наприклад, щоб записати байти в `stdout`, використовуйте `sys.stdout.buffer.write(b'abc')`.

  However, if you are writing a library (and do not control in which context its code will be executed), be aware that the standard streams may be replaced with file-like objects like `io.StringIO` which do not support the `buffer` attribute.

sys.__stdin__
sys.__stdout__
sys.__stderr__

  Ці об’єкти містять вихідні значення `stdin`, `stderr` і `stdout` на початку програми. Вони використовуються під час фіналізації та можуть бути корисними для друку у фактичний стандартний потік незалежно від того, чи було перенаправлено об’єкт `sys.std*`.

  Його також можна використовувати для відновлення фактичних файлів до відомих робочих файлових об’єктів, якщо вони були перезаписані зламаним об’єктом. Однак кращим способом зробити це є явне збереження попереднього потоку перед його заміною та відновлення збереженого об’єкта.

  Примітка

  За деяких умов `stdin`, `stdout` і `stderr`, а також вихідні значення `__stdin__`, `__stdout__` і `__stderr__` можуть бути `None` . Зазвичай це стосується програм графічного інтерфейсу Windows, які не підключені до консолі, і програм Python, запущених за допомогою pythonw.

sys.stdlib_module_names

  Заморожений набір рядків, що містять назви модулів стандартної бібліотеки.

  Це однаково на всіх платформах. Також перераховано модулі, які недоступні на деяких платформах, і модулі, вимкнені під час збірки Python. Перераховано всі види модулів: чистий Python, вбудовані, заморожені та модулі розширення. Тестові модулі не включені.

  Для пакетів вказано лише основний пакет: підпакети та підмодулі не вказані. Наприклад, у списку є пакет `email`, але підпакет `email.mime` і підмодуль `email.message` відсутні.

  See also the `sys.builtin_module_names` list.

  Added in version 3.10.

sys.thread_info

  named tuple, що містить інформацію про реалізацію потоку.

  thread_info.name

    The name of the thread implementation:

    - `"nt"`: Windows threads

    - `"pthread"`: POSIX threads

    - `"pthread-stubs"`: stub POSIX threads (on WebAssembly platforms without threading support)

    - `"solaris"`: Solaris threads

  thread_info.lock

    The name of the lock implementation:

    - `"semaphore"`: a lock uses a semaphore

    - `"mutex+cond"`: a lock uses a mutex and a condition variable

    - `None`, якщо ця інформація невідома

  thread_info.version

    The name and version of the thread library. It is a string, or `None` if this information is unknown.

  Added in version 3.3.

sys.tracebacklimit

  Якщо для цієї змінної встановлено ціле число, вона визначає максимальну кількість рівнів інформації про відстеження, що друкується, коли виникає необроблена виняткова ситуація. Типовим значенням є `1000`. Якщо встановлено значення `0` або менше, уся інформація зворотного відстеження пригнічується, і друкуються лише тип винятку та значення.

sys.unraisablehook(unraisable, /)

  Обробляти неможливий виняток.

  Викликається, коли сталася виняткова ситуація, але Python не може її впоратися. Наприклад, коли деструктор викликає виняток або під час збирання сміття (`gc.collect()`).

  Аргумент unraisable має такі атрибути:

  - `exc_type`: Exception type.

  - `exc_value`: Exception value, can be `None`.

  - `exc_traceback`: Exception traceback, can be `None`.

  - `err_msg`: Error message, can be `None`.

  - `object`: Object causing the exception, can be `None`.

  The default hook formats `err_msg` and `object` as: `f'{err_msg}: {object!r}'`; use «Exception ignored in» error message if `err_msg` is `None`. Similar to the `traceback` module, this adds color to exceptions by default. This can be disabled using environment variables.

  `sys.unraisablehook()` можна перевизначити, щоб керувати обробкою винятків, які не підлягають виклику.

  Змінено в версії 3.15: Exceptions are now printed with colorful text.

  Дивись також

  `excepthook()` which handles uncaught exceptions.

  Попередження

  Storing `exc_value` using a custom hook can create a reference cycle. It should be cleared explicitly to break the reference cycle when the exception is no longer needed.

  Storing `object` using a custom hook can resurrect it if it is set to an object which is being finalized. Avoid storing `object` after the custom hook completes to avoid resurrecting objects.

  Raise an auditing event `sys.unraisablehook` with arguments hook, unraisable when an exception that cannot be handled occurs. The unraisable object is the same as what will be passed to the hook. If no hook has been set, hook may be `None`.

  Added in version 3.8.

sys.version

  Рядок, що містить номер версії інтерпретатора Python, а також додаткову інформацію про номер збірки та використаний компілятор. Цей рядок відображається під час запуску інтерактивного інтерпретатора. Не витягуйте з нього інформацію про версію, скоріше використовуйте `version_info` і функції, надані модулем `platform`.

sys.api_version

  The C API version, equivalent to the C macro `PYTHON_API_VERSION`. Defined for backwards compatibility.

  Currently, this constant is not updated in new Python versions, and is not useful for versioning. This may change in the future.

sys.version_info

  Кортеж, що містить п’ять компонентів номера версії: major, minor, micro, releaselevel і serial. Усі значення, крім releaselevel, є цілими числами; рівень випуску - `'альфа'`, `'бета'`, `'кандидат'` або `'фінальний'`. Значення `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

  The version number used to form registry keys on Windows platforms. This is stored as string resource 1000 in the Python DLL. The value is normally the major and minor versions of the running Python interpreter. It is provided in the `sys` module for informational purposes; modifying this value has no effect on the registry keys used by Python.

  Availability: Windows.

sys.monitoring

  Namespace containing functions and constants for register callbacks and controlling monitoring events. See `sys.monitoring` for details.

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 спосіб доступу до параметрів, що передаються через `-X`. Інші реалізації можуть експортувати їх іншими засобами або взагалі не експортувати.

  Added in version 3.2.

Цитування

[C99]

ISO/IEC 9899:1999. «Programming languages – C.» A public draft of this standard is available at https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.