sys — rendszerspecifikus függvények

Ez a modul hozzáférést biztosít az értelmezőspecifikus változókhoz és függvényekhez, beleértve a parancssori argumentumokat, a modulkeresési útvonalat, a standard adatfolyamokat és a futó implementációval kapcsolatos információkat.

Függvények

sys.exit(retval: object = 0, /) NoReturn

Az aktuális program befejezése a megadott kilépési kóddal. A háttérben ez a függvény egy SystemExit kivételt vált ki. Ha argumentumot adunk meg, annak értéke kerül a SystemExit argumentumaként átadásra.

Az OpenMV Cam-en egy nem kezelt SystemExit jelenleg a MicroPython Szoftveres visszaállítás műveletét idézi elő.

sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None

A func regisztrálása, hogy a befejezéskor meghívásra kerüljön. A func egy argumentum nélkül hívható objektum kell legyen, vagy None a hívás letiltásához. Az atexit függvény visszaadja a korábban, ezzel a függvénnyel beállított értéket, amely kezdetben None.

Eltérés a CPython-tól

Ez a függvény egy MicroPython kiterjesztés, amely a CPython atexit moduljához hasonló funkcionalitás biztosítására szolgál.

sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None

Egy kivétel kiírása a hozzá tartozó visszakövetéssel (traceback) együtt egy fájlszerű file objektumba (vagy alapértelmezés szerint a sys.stdout-ba).

Eltérés a CPython-tól

Ez egy egyszerűsített változata egy függvénynek, amely a CPython traceback moduljában jelenik meg. A traceback.print_exception()-tól eltérően ez a függvény csak a kivétel értékét veszi át a kivétel típusa, kivétel értéke és visszakövetési objektum helyett; a file argumentumot pozíció szerint kell megadni; további argumentumok nem támogatottak. A CPython-kompatibilis traceback modul a micropython-lib-ben található.

sys.settrace(tracefunc: Callable | None) None

A bájtkód végrehajtás nyomkövetésének engedélyezése. A részletekért lásd a CPython dokumentációt.

Ez a függvény nem érhető el az OpenMV Cam-en. Alapértelmezés szerint le van tiltva, mert lassítja a kódvégrehajtást; az engedélyezéséhez egyéni firmware fordítása szükséges.

Konstansok

sys.argv: list[str]

Az argumentumok módosítható listája, amelyekkel az aktuális program elindult.

sys.byteorder: str

A rendszer bájtsorrendje ("little" vagy "big").

sys.implementation: object

Objektum, amely információt tartalmaz az aktuális Python implementációról. A MicroPython esetén a következő attribútumokkal rendelkezik:

  • name - karakterlánc „micropython”

  • version - tuple (major, minor, micro, releaselevel), pl. (1, 22, 0, «»)

  • _machine - az alapul szolgáló gépet leíró karakterlánc

  • _mpy - a támogatott mpy fájlformátum verziója (opcionális attribútum)

  • _build - karakterlánc, amely segíthet azonosítani azt a konfigurációt, amellyel a MicroPython fordításra került

  • _thread - opcionális karakterlánc attribútum, akkor létezik, ha a célplatform rendelkezik szálkezeléssel, és értéke vagy „GIL” vagy „unsafe”

Ez az objektum az ajánlott módja a MicroPython megkülönböztetésének más Python implementációktól (vegye figyelembe, hogy a nagyon minimális portokon még így sem feltétlenül létezik).

Az 1.22.0-preview verziótól kezdve az implementation.version negyedik eleme, a releaselevel, vagy egy üres karakterlánc, vagy "preview".

A _build bejegyzés az 1.25.0 verzióban került hozzáadásra, és kötőjellel elválasztott elemek halmaza. A jövőben új elemek kerülhetnek hozzáfűzésre, ezért a legjobb, ha ezt a mezőt a sys.implementation._build.split("-") segítségével éri el. A jelenleg használt elemek a következők:

  • Az OpenMV Cam-en az első elem a kártya neve, a második elem (ha van) pedig a kártya változata.

A _thread bejegyzés az 1.26.0 verzióban került hozzáadásra, és ha létezik, akkor a célplatform rendelkezik a _thread modullal. Ha a célplatform engedélyezi a GIL-t (globális értelmező zárolás), akkor ennek az attribútumnak az értéke "GIL". Egyébként az attribútum értéke "unsafe", és a célplatform rendelkezik szálkezeléssel, de nem engedélyezi a GIL-t, így a szálak között megosztott, módosítható Python objektumokat (mint a bytearray, list és dict) kifejezetten zárolásokkal kell védeni, például a _thread.allocate_lock segítségével.

Eltérés a CPython-tól

A CPython több attribútumot ír elő ehhez az objektumhoz, de a ténylegesen hasznos minimum implementálva van a MicroPython-ban.

sys.maxsize: int

Az a maximális érték, amelyet egy natív egész típus tárolni tud az aktuális platformon, vagy a MicroPython egész típus által ábrázolható maximális érték, ha az kisebb a platform maximális értékénél (ez a helyzet a long int támogatás nélküli MicroPython portoknál).

Ez az attribútum hasznos egy platform „bitességének” (32 bites vs 64 bites stb.) felismeréséhez. Ajánlott nem közvetlenül egy értékhez hasonlítani ezt az attribútumot, hanem ehelyett megszámolni benne a bitek számát:

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.modules: dict

A betöltött modulok szótára. Az OpenMV Cam-en ez nem tartalmazza a beépített modulokat.

sys.path: list[str]

Az importált modulok kereséséhez használt könyvtárak módosítható listája.

Eltérés a CPython-tól

A MicroPython-ban a ".frozen" értékű bejegyzés azt jelzi, hogy az importálásnak a keresés ezen pontján a fagyasztott modulok között kell keresnie. Ha nem található fagyasztott modul, akkor a keresés nem fog egy .frozen nevű könyvtárat keresni, hanem a sys.path következő bejegyzésével folytatja.

sys.platform: str

Az a platform, amelyen a MicroPython fut. Ez egy port/kártya által meghatározott karakterlánc – például "mimxrt" az OpenMV RT1060-on és "alif" az OpenMV AE3-on (néhány régebbi OpenMV Cam egy modellspecifikus karakterláncot jelent, mint például "OpenMV4-H7"). Annak ellenőrzéséhez, hogy a programja MicroPython-on (és nem egy másik Python implementáción) fut-e, használja inkább a sys.implementation-t.

sys.ps1: str

Módosítható attribútum, amely az elsődleges REPL prompt karakterláncát tárolja. Az alapértelmezett érték a standard Python >>> promptot adja. Lásd még a sys.ps2-t a folytatási prompthoz.

sys.ps2: str

Módosítható attribútum, amely a REPL folytatási prompt karakterláncát tárolja. Az alapértelmezett érték a standard Python ... promptot adja. Lásd még a sys.ps1-et az elsődleges prompthoz.

sys.stderr: object

Standard hiba stream.

sys.stdin: object

Standard bemeneti stream.

sys.stdout: object

Standard kimeneti stream.

sys.tracebacklimit: int

Módosítható attribútum, amely egy egész értéket tárol, ez a kivételekben tárolandó visszakövetési bejegyzések maximális száma. Állítsa 0-ra a visszakövetések hozzáadásának letiltásához. Alapértelmezett értéke 1000.

Megjegyzés: ez az attribútum nem érhető el az OpenMV Cam-en.

sys.version: str

A Python nyelvi verzió, amelynek ez az implementáció megfelel, karakterláncként.

sys.version_info: tuple

A Python nyelvi verzió, amelynek ez az implementáció megfelel, egész számok tuple-jeként.

Eltérés a CPython-tól

Csak az első három verziószám (major, minor, micro) támogatott, és ezek csak index szerint hivatkozhatók, név szerint nem.