MicroPython:Библиотеки/sys
Модуль sys – системные функции[1]
В этом модуле реализована часть функционала соответствующего модуля CPython. Более подробно читайте в документации к CPython о модуле sys.
Функции
- sys.exit(retval=0, /) – прекращает работу текущей программы с заданным кодом выхода. Возбуждает исключение SystemExit. Если в sys.exit() задан аргумент, его значение будет присвоено аргументу SystemExit.
- sys.atexit(func) – задает функцию, которая будет вызвана при прекращении работы программы. Эта функция (func) должна быть вызываемым объектом без аргументов или с аргументом None (чтобы отключить вызов этих «выходных» функций). Возвращает предыдущее значение, заданное этой функцией (по умолчанию это None).
В CPython этой функции нет, она сделана специально для MicroPython, но примерно повторяет функционал модуля atexit в CPython.
- sys.print_exception(exc, file=sys.stdout, /) – печатает исключение с трассировкой к файлообразному объекту file или sys.stdout (по умолчанию).
Это упрощенная версия одноименной функции из модуля traceback в CPython. Но MicroPython’овская версия принимает в качестве аргумента только значение исключения, тогда как CPython’овская версия print_exception() вдобавок к значению исключения принимает тип исключения и объект трассировки. Аргумент file должен быть позиционным; другие аргументы не поддерживаются. CPython-совместимый модуль traceback есть в библиотеке «micropython-lib».
Константы
- sys.argv – изменяемый список аргументов, с которыми была запущена текущая программа.
- sys.byteorder – порядок байтов системы. Доступны варианты «little» (от младшего бита к старшему) и «big» (от старшего к младшему).
- sys.implementation – объект с информацией о текущей реализации Python. В MicroPython у него следующие атрибуты:
- name – строка «micropython».
- version – кортеж (старшая_цифра, средняя_цифра, младшая цифра), например, (1, 7, 0).
Рекомендуем использовать этот объект, чтобы различать MicroPython от других реализаций Python (но на совсем маленьких портах его может не быть). В CPython для этого объекта требуется больше атрибутов, тогда как в MicroPython реализован их полезный минимум.
- sys.maxsize – максимальное значение, которое может содержать нативный целочисленный тип данных на используемой платформе, или максимальное значение для целочисленного типа данных MicroPython, если оно меньше максимального значения платформы (в случае, если MicroPython-платформа не поддерживает длинные целые числа).
Этот атрибут полезен для определения «битности» платформы (32 бита vs 64 бита и т.д.). Рекомендуем не сравнивать этот атрибут напрямую с каким-либо значением, а просто считать количество бит в нем:
bits = 0
v = sys.maxsize
while v:
bits += 1
v >>= 1
if bits > 32:
# 64-битная (или больше) платформа
...
else:
# 32-битная (или меньше) платформа
# Помните, что на 32-битных платформах
# количество бит может быть меньше 32 (например, 31)
# из-за особенностей, описанных выше,
# поэтому используйте сравнения вроде
# «> 16», «> 32», «> 64».
- sys.modules – словарь с загруженными модулями. На некоторых портах в нем может не быть встроенных модулей.
- sys.path – изменяемый список директорий для поиска импортированных модулей.
- sys.platform – платформа, на которой запущен MicroPython. Для ОС/RTOS-портов – это, как правило, идентификатор ОС (например, «linux»). Для «голых» портов это идентификатор платы (например, «pyboard» для эталонной платы MicroPython). Соответственно, эту константу можно использовать, чтобы отличать одну плату от другой. Если вам нужно проверить то, запускается ли ваша программа на MicroPython (или на другой реализации Python), вместо этой константы используйте sys.implementation (см. выше).
- sys.stderr – потоковый объект для стандартных ошибок.
- sys.stdin – потоковый объект для стандартного ввода данных.
- sys.stdout – потоковый объект для стандартного вывода данных.
- sys.version – версия языка Python, которой соответствует эта реализация (в виде строки).
- sys.version_info – версия языка Python, которой соответствует эта реализация (в виде кортежа с целыми числами).
Поддерживаются только три первых цифры версии, и обращаться к ним можно только по индексу, но не по названию.
<syntaxhighlight lang="python" enclose="div">