sys — системно-специфічні функції¶
Цей модуль надає доступ до змінних та функцій, специфічних для інтерпретатора, включаючи аргументи командного рядка, шлях пошуку модулів, стандартні потоки та інформацію про поточну реалізацію.
Функції¶
- sys.exit(retval: object = 0, /) NoReturn¶
Завершує поточну програму із заданим кодом виходу. Внутрішньо ця функція генерує виняток
SystemExit. Якщо аргумент задано, його значення передається як аргумент доSystemExit.На OpenMV Cam необроблений виняток
SystemExitнаразі викликає Програмне скидання MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Реєструє func для виклику при завершенні. func має бути викликуваним об’єктом без аргументів або
Noneдля скасування виклику. Функціяatexitповерне попереднє значення, встановлене цією функцією, яке спочатку дорівнюєNone.Відмінність від CPython
Ця функція є розширенням MicroPython, призначеним для забезпечення функціональності, подібної до модуля
atexitу CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Виводить виняток із трасуванням до файлоподібного об’єкта file (або
sys.stdoutза замовчуванням).Відмінність від CPython
Це спрощена версія функції, яка є в модулі
tracebackCPython. На відміну відtraceback.print_exception(), ця функція приймає лише значення винятку замість типу винятку, значення винятку та об’єкта трасування; аргумент file має бути позиційним; подальші аргументи не підтримуються. CPython-сумісний модульtracebackможна знайти вmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Вмикає трасування виконання байт-коду. Докладніше дивіться в документації CPython.
Ця функція недоступна на OpenMV Cam. Вона вимкнена за замовчуванням, оскільки сповільнює виконання коду; для її увімкнення потрібно зібрати спеціальну мікропрограму.
Константи¶
- sys.implementation: object¶
Об’єкт з інформацією про поточну реалізацію Python. Для MicroPython він має такі атрибути:
name - рядок «micropython»
version - кортеж (major, minor, micro, releaselevel), наприклад (1, 22, 0, „“)
_machine - рядок, що описує базову машину
_mpy - підтримувана версія формату файлу mpy (необов’язковий атрибут)
_build - рядок, що допомагає ідентифікувати конфігурацію, з якою було зібрано MicroPython
_thread - необов’язковий рядковий атрибут, існує якщо ціль підтримує потоки і є або «GIL», або «unsafe»
Цей об’єкт є рекомендованим способом відрізнити MicroPython від інших реалізацій Python (зверніть увагу, що він все ж може не існувати у дуже мінімальних портах).
Починаючи з версії 1.22.0-preview, четвертий вузол releaselevel у implementation.version є або порожнім рядком, або
"preview".Запис _build був доданий у версії 1.25.0 і являє собою набір елементів, розділених дефісом. Нові елементи можуть бути додані в майбутньому, тому для доступу до цього поля найкраще використовувати
sys.implementation._build.split("-"). Поточні використовувані елементи:На OpenMV Cam перший елемент — це назва плати, а другий елемент (якщо присутній) — варіант плати.
Запис _thread був доданий у версії 1.26.0, і якщо він існує, то ціль має модуль
_thread. Якщо ціль вмикає GIL (глобальне блокування інтерпретатора), то цей атрибут дорівнює"GIL". В іншому разі атрибут дорівнює"unsafe"— ціль підтримує потоки, але не вмикає GIL, і змінювані об’єкти Python (такі якbytearray,listтаdict), які спільно використовуються між потоками, мають бути явно захищені блокуваннями, такими як_thread.allocate_lock.Відмінність від CPython
CPython вимагає більше атрибутів для цього об’єкта, але в MicroPython реалізовано лише фактично корисний мінімум.
- sys.maxsize: int¶
Максимальне значення, яке може зберігати рідний цілочисельний тип на поточній платформі, або максимальне значення, яке може представляти цілочисельний тип MicroPython, якщо воно менше за максимальне значення платформи (це стосується портів MicroPython без підтримки довгих цілих чисел).
Цей атрибут корисний для визначення «розрядності» платформи (32-розрядна проти 64-розрядної тощо). Рекомендується не порівнювати цей атрибут безпосередньо з якимось значенням, а натомість рахувати кількість бітів у ньому:
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64-bit (or more) platform ... else: # 32-bit (or less) platform # Note that on 32-bit platform, value of bits may be less than 32 # (e.g. 31) due to peculiarities described above, so use "> 16", # "> 32", "> 64" style of comparisons.
- sys.path: list[str]¶
Змінний список директорій для пошуку імпортованих модулів.
Відмінність від CPython
У MicroPython запис зі значенням
".frozen"вказуватиме, що імпорт має шукати заморожені модулі на цьому кроці пошуку. Якщо заморожений модуль не знайдено, пошук не шукатиме директорію з назвою.frozen, а перейде до наступного запису вsys.path.
- sys.platform: str¶
Платформа, на якій виконується MicroPython. Це рядок, визначений портом/платою — наприклад
"mimxrt"на OpenMV RT1060 та"alif"на OpenMV AE3 (деякі старіші OpenMV Cam повідомляють специфічний для моделі рядок, наприклад"OpenMV4-H7"). Щоб перевірити, чи виконується ваша програма на MicroPython (на відміну від іншої реалізації Python), використовуйтеsys.implementation.
- sys.ps1: str¶
Змінний атрибут, що зберігає рядок, використовуваний для основного підказки REPL. Значення за замовчуванням дає стандартну підказку Python
>>>. Дивіться такожsys.ps2для підказки продовження.
- sys.ps2: str¶
Змінний атрибут, що зберігає рядок, використовуваний для підказки продовження REPL. Значення за замовчуванням дає стандартну підказку Python
.... Дивіться такожsys.ps1для основної підказки.