sys — funkce specifické pro systém¶
Tento modul poskytuje přístup k proměnným a funkcím specifickým pro interpret, včetně argumentů příkazové řádky, vyhledávací cesty modulů, standardních streamů a informací o běžící implementaci.
Funkce¶
- sys.exit(retval: object = 0, /) NoReturn¶
Ukončí aktuální program s daným návratovým kódem. Tato funkce v podstatě vyvolá výjimku
SystemExit. Pokud je zadán argument, jeho hodnota se předá jako argument výjimceSystemExit.Na OpenMV Cam neošetřená výjimka
SystemExitaktuálně způsobí Měkký reset MicroPythonu.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Zaregistruje funkci func, která se má zavolat při ukončení. func musí být volatelný objekt, který nepřijímá žádné argumenty, nebo
Nonepro zakázání volání. Funkceatexitvrátí předchozí hodnotu nastavenou touto funkcí, která je na začátkuNone.Rozdíl oproti CPythonu
Tato funkce je rozšíření MicroPythonu, jehož cílem je poskytnout funkcionalitu podobnou modulu
atexitv CPythonu.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Vytiskne výjimku spolu s tracebackem do objektu podobného souboru file (nebo ve výchozím nastavení do
sys.stdout).Rozdíl oproti CPythonu
Toto je zjednodušená verze funkce, která se v CPythonu nachází v modulu
traceback. Na rozdíl odtraceback.print_exception()přijímá tato funkce pouze hodnotu výjimky namísto typu výjimky, hodnoty výjimky a objektu traceback; argument file by měl být poziční; další argumenty nejsou podporovány. Modultracebackkompatibilní s CPythonem lze nalézt vmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Povolí trasování provádění bytecode. Podrobnosti viz dokumentace CPythonu.
Tato funkce není na OpenMV Cam dostupná. Ve výchozím nastavení je zakázána, protože zpomaluje provádění kódu; její povolení vyžaduje sestavení vlastního firmwaru.
Konstanty¶
- sys.implementation: object¶
Objekt s informacemi o aktuální implementaci Pythonu. U MicroPythonu má následující atributy:
name - řetězec „micropython“
version - n-tice (major, minor, micro, releaselevel), např. (1, 22, 0, ‚‘)
_machine - řetězec popisující podkladový stroj
_mpy - podporovaná verze formátu souboru mpy (volitelný atribut)
_build - řetězec, který může pomoci identifikovat konfiguraci, se kterou byl MicroPython sestaven
_thread - volitelný řetězcový atribut, existuje, pokud cíl podporuje vlákna, a je buď „GIL“, nebo „unsafe“
Tento objekt je doporučený způsob, jak odlišit MicroPython od jiných implementací Pythonu (mějte na paměti, že ve velmi minimálních portech nemusí existovat).
Počínaje verzí 1.22.0-preview je čtvrtý prvek releaselevel v implementation.version buď prázdný řetězec, nebo
"preview".Položka _build byla přidána ve verzi 1.25.0 a je to sada prvků oddělených pomlčkami. V budoucnu mohou být přidávány nové prvky, takže je nejlepší přistupovat k tomuto poli pomocí
sys.implementation._build.split("-"). Prvky, které se aktuálně používají, jsou:Na OpenMV Cam je prvním prvkem název desky a druhým prvkem (pokud je přítomen) varianta desky.
Položka _thread byla přidána ve verzi 1.26.0 a pokud existuje, pak cíl obsahuje modul
_thread. Pokud cíl povoluje GIL (global interpreter lock), pak má tento atribut hodnotu"GIL". Jinak má atribut hodnotu"unsafe"a cíl podporuje vlákna, ale nepovoluje GIL, a měnitelné objekty Pythonu (jako jsoubytearray,listadict) sdílené mezi vlákny musí být explicitně chráněny zámky, jako je_thread.allocate_lock.Rozdíl oproti CPythonu
CPython pro tento objekt vyžaduje více atributů, ale v MicroPythonu je implementováno skutečně užitečné nezbytné minimum.
- sys.maxsize: int¶
Maximální hodnota, kterou může na aktuální platformě uchovat nativní celočíselný typ, nebo maximální hodnota reprezentovatelná celočíselným typem MicroPythonu, pokud je menší než maximální hodnota platformy (což je případ portů MicroPythonu bez podpory long int).
Tento atribut je užitečný pro zjištění „bitovosti“ platformy (32bitová vs 64bitová atd.). Doporučuje se neporovnávat tento atribut přímo s nějakou hodnotou, ale místo toho spočítat počet bitů v něm:
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]¶
Měnitelný seznam adresářů, ve kterých se vyhledávají importované moduly.
Rozdíl oproti CPythonu
V MicroPythonu položka s hodnotou
".frozen"značí, že import by měl v tomto bodě vyhledávání hledat zmrazené moduly. Pokud žádný zmrazený modul není nalezen, vyhledávání nebude hledat adresář s názvem.frozen, místo toho bude pokračovat další položkou vsys.path.
- sys.platform: str¶
Platforma, na které MicroPython běží. Jedná se o řetězec definovaný portem/deskou – například
"mimxrt"na OpenMV RT1060 a"alif"na OpenMV AE3 (některé starší OpenMV Cam hlásí řetězec specifický pro model, například"OpenMV4-H7"). Chcete-li ověřit, zda váš program běží na MicroPythonu (oproti jiné implementaci Pythonu), použijte místo tohosys.implementation.
- sys.ps1: str¶
Měnitelný atribut obsahující řetězec použitý pro hlavní výzvu REPL. Výchozí hodnota dává standardní výzvu Pythonu
>>>. Viz takésys.ps2pro výzvu pokračování.
- sys.ps2: str¶
Měnitelný atribut obsahující řetězec použitý pro výzvu pokračování REPL. Výchozí hodnota dává standardní výzvu Pythonu
.... Viz takésys.ps1pro hlavní výzvu.