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ătreSystemExit.Pe OpenMV Cam, o excepție
SystemExitnetratată 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
Nonepentru a dezactiva apelul. Funcțiaatexitva returna valoarea anterioară setată de această funcție, care inițial esteNone.Diferență față de CPython
Această funcție este o extensie MicroPython destinată să ofere o funcționalitate similară cu modulul
atexitdin 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
tracebackdin CPython. Spre deosebire detraceback.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 modultracebackcompatibil cu CPython poate fi găsit înmicropython-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.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 fibytearray,listșidict) 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 dinsys.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 schimbsys.implementation.
- sys.ps1: str¶
Atribut modificabil care conține șirul folosit pentru promptul principal al REPL. Valoarea implicită oferă promptul standard Python
>>>. Consultați șisys.ps2pentru 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 șisys.ps1pentru promptul principal.
- 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.