sys — funcții specifice sistemului

Acest modul oferă acces la variabile și funcții specifice interpretorului, inclusiv argumentele din linia de comandă, calea de căutare a modulelor, fluxurile standard și informații despre implementarea aflată în execuție.

Funcții

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

Termină programul curent cu un cod de ieșire dat. La nivel intern, această funcție generează o excepție SystemExit. Dacă este furnizat un argument, valoarea acestuia este transmisă ca argument către SystemExit.

Pe OpenMV Cam, o excepție SystemExit netratată provoacă în prezent un Resetare software al MicroPython.

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

Înregistrează func pentru a fi apelată la terminare. func trebuie să fie un obiect apelabil care nu primește argumente, sau None pentru a dezactiva apelul. Funcția atexit va returna valoarea anterioară setată de această funcție, care inițial este None.

Diferență față de CPython

Această funcție este o extensie MicroPython destinată să ofere o funcționalitate similară cu modulul atexit din CPython.

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

Afișează excepția împreună cu un traceback într-un obiect de tip fișier file (sau sys.stdout în mod implicit).

Diferență față de CPython

Aceasta este o versiune simplificată a unei funcții care apare în modulul traceback din CPython. Spre deosebire de traceback.print_exception(), această funcție primește doar valoarea excepției în locul tipului excepției, valorii excepției și obiectului traceback; argumentul file trebuie să fie pozițional; argumentele suplimentare nu sunt acceptate. Un modul traceback compatibil cu CPython poate fi găsit în micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Activează urmărirea execuției bytecode-ului. Pentru detalii consultați documentația CPython.

Această funcție nu este disponibilă pe OpenMV Cam. Este dezactivată în mod implicit deoarece încetinește execuția codului; activarea ei necesită compilarea unui firmware personalizat.

Constante

sys.argv: list[str]

O listă modificabilă a argumentelor cu care a fost pornit programul curent.

sys.byteorder: str

Ordinea octeților sistemului ("little" sau "big").

sys.implementation: object

Obiect cu informații despre implementarea Python curentă. Pentru MicroPython, acesta are următoarele atribute:

  • name - șirul „micropython”

  • version - tuplu (major, minor, micro, releaselevel), de exemplu (1, 22, 0, «»)

  • _machine - șir care descrie mașina subiacentă

  • _mpy - versiunea formatului de fișier mpy acceptată (atribut opțional)

  • _build - șir care poate ajuta la identificarea configurației cu care a fost compilat MicroPython

  • _thread - atribut șir opțional, există dacă ținta are suport pentru fire de execuție și este fie „GIL”, fie „unsafe”

Acest obiect este modalitatea recomandată de a distinge MicroPython de alte implementări Python (rețineți că este posibil să nu existe totuși în porturile foarte minimale).

Începând cu versiunea 1.22.0-preview, al patrulea nod releaselevel din implementation.version este fie un șir gol, fie "preview".

Intrarea _build a fost adăugată în versiunea 1.25.0 și este un set de elemente separate prin cratimă. În viitor pot fi adăugate elemente noi, așa că este recomandat să accesați acest câmp folosind sys.implementation._build.split("-"). Elementele utilizate în prezent sunt:

  • Pe OpenMV Cam, primul element este numele plăcii, iar al doilea element (dacă este prezent) este varianta plăcii.

Intrarea _thread a fost adăugată în versiunea 1.26.0 și, dacă există, atunci ținta are modulul _thread. Dacă ținta activează GIL (global interpreter lock), atunci acest atribut este "GIL". În caz contrar, atributul este "unsafe" și ținta are suport pentru fire de execuție, dar nu activează GIL, iar obiectele Python modificabile (cum ar fi bytearray, list și dict) care sunt partajate între fire trebuie protejate explicit prin blocaje precum _thread.allocate_lock.

Diferență față de CPython

CPython impune mai multe atribute pentru acest obiect, dar minimul strict util este implementat în MicroPython.

sys.maxsize: int

Valoarea maximă pe care o poate reține un tip de întreg nativ pe platforma curentă, sau valoarea maximă reprezentabilă de tipul de întreg MicroPython, dacă aceasta este mai mică decât valoarea maximă a platformei (acesta este cazul porturilor MicroPython fără suport pentru long int).

Acest atribut este util pentru detectarea „lățimii” unei platforme (32 de biți față de 64 de biți etc.). Se recomandă să nu comparați acest atribut direct cu o anumită valoare, ci în schimb să numărați numărul de biți din el:

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

Dicționar al modulelor încărcate. Pe OpenMV Cam, acesta nu include modulele încorporate.

sys.path: list[str]

O listă modificabilă de directoare în care se caută modulele importate.

Diferență față de CPython

În MicroPython, o intrare cu valoarea ".frozen" va indica faptul că importul ar trebui să caute module înghețate în acel punct al căutării. Dacă nu se găsește niciun modul înghețat, atunci căutarea nu va căuta un director numit .frozen, ci va continua cu următoarea intrare din sys.path.

sys.platform: str

Platforma pe care rulează MicroPython. Acesta este un șir definit de port/placă – de exemplu "mimxrt" pe OpenMV RT1060 și "alif" pe OpenMV AE3 (unele OpenMV Cam mai vechi raportează un șir specific modelului, cum ar fi "OpenMV4-H7"). Pentru a verifica dacă programul dvs. rulează pe MicroPython (față de o altă implementare Python), folosiți în schimb sys.implementation.

sys.ps1: str

Atribut modificabil care conține șirul folosit pentru promptul principal al REPL. Valoarea implicită oferă promptul standard Python >>>. Consultați și sys.ps2 pentru promptul de continuare.

sys.ps2: str

Atribut modificabil care conține șirul folosit pentru promptul de continuare al REPL. Valoarea implicită oferă promptul standard Python .... Consultați și sys.ps1 pentru promptul principal.

sys.stderr: object

Fluxul (stream) de eroare standard.

sys.stdin: object

Fluxul (stream) de intrare standard.

sys.stdout: object

Fluxul (stream) de ieșire standard.

sys.tracebacklimit: int

Atribut modificabil care conține o valoare întreagă reprezentând numărul maxim de intrări traceback de stocat într-o excepție. Setați la 0 pentru a dezactiva adăugarea traceback-urilor. Valoarea implicită este 1000.

Notă: acest atribut nu este disponibil pe OpenMV Cam.

sys.version: str

Versiunea limbajului Python la care se conformează această implementare, sub formă de șir.

sys.version_info: tuple

Versiunea limbajului Python la care se conformează această implementare, sub formă de tuplu de întregi.

Diferență față de CPython

Sunt acceptate doar primele trei numere de versiune (major, minor, micro) și pot fi referite doar prin index, nu prin nume.