sys — funzioni specifiche del sistema¶
Questo modulo fornisce l’accesso a variabili e funzioni specifiche dell’interprete, inclusi gli argomenti della riga di comando, il percorso di ricerca dei moduli, gli stream standard e le informazioni sull’implementazione in esecuzione.
Funzioni¶
- sys.exit(retval: object = 0, /) NoReturn¶
Termina il programma corrente con un dato codice di uscita. Internamente, questa funzione solleva un’eccezione
SystemExit. Se viene fornito un argomento, il suo valore viene passato come argomento aSystemExit.Sulla OpenMV Cam, un’eccezione
SystemExitnon gestita attualmente provoca un Soft reset di MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Registra func affinché venga chiamata al momento della terminazione. func deve essere un oggetto chiamabile che non accetta argomenti, oppure
Noneper disabilitare la chiamata. La funzioneatexitrestituirà il valore precedente impostato da questa funzione, che inizialmente èNone.Differenze rispetto a CPython
Questa funzione è un’estensione di MicroPython intesa a fornire funzionalità simili a quelle del modulo
atexitin CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Stampa un’eccezione con un traceback su un oggetto file-like file (oppure
sys.stdoutper impostazione predefinita).Differenze rispetto a CPython
Questa è una versione semplificata di una funzione presente nel modulo
tracebackdi CPython. A differenza ditraceback.print_exception(), questa funzione accetta solo il valore dell’eccezione invece del tipo di eccezione, del valore dell’eccezione e dell’oggetto traceback; l’argomento file deve essere posizionale; ulteriori argomenti non sono supportati. Un modulotracebackcompatibile con CPython si trova inmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Abilita il tracciamento dell’esecuzione del bytecode. Per i dettagli vedere la documentazione di CPython.
Questa funzione non è disponibile sulla OpenMV Cam. È disabilitata per impostazione predefinita perché rallenta l’esecuzione del codice; per abilitarla è necessario compilare un firmware personalizzato.
Costanti¶
- sys.argv: list[str]¶
Una lista modificabile degli argomenti con cui è stato avviato il programma corrente.
- sys.implementation: object¶
Oggetto contenente informazioni sull’implementazione Python corrente. Per MicroPython, ha i seguenti attributi:
name - stringa «micropython»
version - tupla (major, minor, micro, releaselevel), ad esempio (1, 22, 0, “”)
_machine - stringa che descrive la macchina sottostante
_mpy - versione del formato di file mpy supportato (attributo opzionale)
_build - stringa che può aiutare a identificare la configurazione con cui MicroPython è stato compilato
_thread - attributo stringa opzionale, esiste se il target supporta il threading ed è «GIL» oppure «unsafe»
Questo oggetto è il modo consigliato per distinguere MicroPython da altre implementazioni di Python (si noti che potrebbe comunque non esistere nelle port più minimali).
A partire dalla versione 1.22.0-preview, il quarto nodo releaselevel in implementation.version è una stringa vuota oppure
"preview".La voce _build è stata aggiunta nella versione 1.25.0 ed è un insieme di elementi separati da trattini. In futuro potrebbero essere aggiunti nuovi elementi, quindi è preferibile accedere a questo campo usando
sys.implementation._build.split("-"). Gli elementi attualmente utilizzati sono:Sulla OpenMV Cam il primo elemento è il nome della scheda e il secondo elemento (se presente) è la variante della scheda.
La voce _thread è stata aggiunta nella versione 1.26.0 e, se esiste, il target dispone del modulo
_thread. Se il target abilita il GIL (global interpreter lock) questo attributo è"GIL". Altrimenti l’attributo è"unsafe"e il target supporta il threading ma non abilita il GIL, e gli oggetti Python modificabili (comebytearray,listedict) condivisi tra i thread devono essere protetti esplicitamente da lock come_thread.allocate_lock.Differenze rispetto a CPython
CPython prevede più attributi per questo oggetto, ma in MicroPython è implementato il minimo indispensabile effettivamente utile.
- sys.maxsize: int¶
Il valore massimo che un tipo intero nativo può contenere sulla piattaforma corrente, oppure il valore massimo rappresentabile dal tipo intero di MicroPython, se è inferiore al valore massimo della piattaforma (questo è il caso delle port di MicroPython senza supporto per gli interi long).
Questo attributo è utile per rilevare la «bitness» di una piattaforma (32-bit vs 64-bit, ecc.). Si consiglia di non confrontare questo attributo direttamente con un valore, ma di contare invece il numero di bit in esso contenuti:
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¶
Dizionario dei moduli caricati. Sulla OpenMV Cam questo non include i moduli integrati.
- sys.path: list[str]¶
Una lista modificabile delle directory in cui cercare i moduli importati.
Differenze rispetto a CPython
In MicroPython, una voce con il valore
".frozen"indicherà che l’importazione dovrà cercare i moduli frozen in quel punto della ricerca. Se non viene trovato alcun modulo frozen, la ricerca non cercherà una directory chiamata.frozen, ma proseguirà con la voce successiva insys.path.
- sys.platform: str¶
La piattaforma su cui è in esecuzione MicroPython. Si tratta di una stringa definita dalla port/scheda – ad esempio
"mimxrt"sulla OpenMV RT1060 e"alif"sulla OpenMV AE3 (alcune OpenMV Cam più vecchie riportano una stringa specifica del modello come"OpenMV4-H7"). Per verificare se il tuo programma viene eseguito su MicroPython (rispetto a un’altra implementazione di Python), usa invecesys.implementation.
- sys.ps1: str¶
Attributo modificabile che contiene la stringa utilizzata per il prompt principale del REPL. Il valore predefinito fornisce il prompt standard di Python
>>>. Vedere anchesys.ps2per il prompt di continuazione.
- sys.ps2: str¶
Attributo modificabile che contiene la stringa utilizzata per il prompt di continuazione del REPL. Il valore predefinito fornisce il prompt standard di Python
.... Vedere anchesys.ps1per il prompt principale.
- sys.tracebacklimit: int¶
Attributo modificabile che contiene un valore intero pari al numero massimo di voci di traceback da memorizzare in un’eccezione. Impostare a 0 per disabilitare l’aggiunta dei traceback. Il valore predefinito è 1000.
Nota: questo attributo non è disponibile sulla OpenMV Cam.