sys — funkcje specyficzne dla systemu¶
Ten moduł zapewnia dostęp do zmiennych i funkcji specyficznych dla interpretera, w tym argumentów wiersza poleceń, ścieżki wyszukiwania modułów, standardowych strumieni oraz informacji o uruchomionej implementacji.
Funkcje¶
- sys.exit(retval: object = 0, /) NoReturn¶
Kończy bieżący program z podanym kodem wyjścia. Wewnętrznie funkcja ta zgłasza wyjątek
SystemExit. Jeśli podano argument, jego wartość jest przekazywana jako argument doSystemExit.Na OpenMV Cam nieobsłużony wyjątek
SystemExitpowoduje obecnie Miękki reset MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Rejestruje funkcję func do wywołania po zakończeniu programu. func musi być obiektem wywoływalnym niewymagającym argumentów lub wartością
None, aby wyłączyć wywołanie. Funkcjaatexitzwraca poprzednią wartość ustawioną przez tę funkcję, która początkowo wynosiNone.Różnica względem CPython
Ta funkcja jest rozszerzeniem MicroPython, którego celem jest zapewnienie funkcjonalności podobnej do modułu
atexitw CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Wypisuje wyjątek wraz ze śladem wywołań do obiektu plikopodobnego file (lub domyślnie do
sys.stdout).Różnica względem CPython
Jest to uproszczona wersja funkcji występującej w module
tracebackw CPython. W przeciwieństwie dotraceback.print_exception()funkcja ta przyjmuje jedynie wartość wyjątku, a nie typ wyjątku, wartość wyjątku i obiekt śladu wywołań; argument file powinien być pozycyjny; dalsze argumenty nie są obsługiwane. Zgodny z CPython modułtracebackmożna znaleźć wmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Włącza śledzenie wykonywania kodu bajtowego. Szczegóły opisano w dokumentacji CPython.
Ta funkcja nie jest dostępna na OpenMV Cam. Jest domyślnie wyłączona, ponieważ spowalnia wykonywanie kodu; jej włączenie wymaga zbudowania niestandardowego oprogramowania układowego.
Stałe¶
- sys.implementation: object¶
Obiekt zawierający informacje o bieżącej implementacji Python. W przypadku MicroPython posiada następujące atrybuty:
name - łańcuch znaków „micropython”
version - krotka (major, minor, micro, releaselevel), np. (1, 22, 0, «»)
_machine - łańcuch znaków opisujący maszynę bazową
_mpy - obsługiwana wersja formatu pliku mpy (atrybut opcjonalny)
_build - łańcuch znaków pomagający zidentyfikować konfigurację, z którą zbudowano MicroPython
_thread - opcjonalny atrybut tekstowy, istnieje, jeśli platforma docelowa obsługuje wątki i ma wartość „GIL” lub „unsafe”
Ten obiekt jest zalecanym sposobem odróżnienia MicroPython od innych implementacji Python (należy pamiętać, że w bardzo minimalnych portach może on nadal nie istnieć).
Począwszy od wersji 1.22.0-preview, czwarty element releaselevel w implementation.version jest pustym łańcuchem znaków albo
"preview".Wpis _build został dodany w wersji 1.25.0 i jest zestawem elementów rozdzielonych myślnikami. W przyszłości mogą zostać dodane nowe elementy, dlatego najlepiej odwoływać się do tego pola za pomocą
sys.implementation._build.split("-"). Aktualnie używane elementy to:Na OpenMV Cam pierwszym elementem jest nazwa płytki, a drugim elementem (jeśli występuje) jest wariant płytki.
Wpis _thread został dodany w wersji 1.26.0 i jeśli istnieje, oznacza, że platforma docelowa posiada moduł
_thread. Jeśli platforma docelowa włącza GIL (globalną blokadę interpretera), to atrybut ten ma wartość"GIL". W przeciwnym razie atrybut ma wartość"unsafe"i platforma docelowa obsługuje wątki, ale nie włącza GIL, a modyfikowalne obiekty Python (takie jakbytearray,listidict) współdzielone między wątkami muszą być jawnie chronione blokadami takimi jak_thread.allocate_lock.Różnica względem CPython
CPython wymaga większej liczby atrybutów dla tego obiektu, ale w MicroPython zaimplementowano faktycznie użyteczne minimum.
- sys.maxsize: int¶
Maksymalna wartość, jaką natywny typ całkowitoliczbowy może przechować na bieżącej platformie, lub maksymalna wartość reprezentowalna przez typ całkowitoliczbowy MicroPython, jeśli jest ona mniejsza niż maksymalna wartość platformy (co ma miejsce w portach MicroPython bez obsługi typu long int).
Ten atrybut jest przydatny do wykrywania „bitowości” platformy (32-bitowa vs 64-bitowa itp.). Zaleca się, aby nie porównywać tego atrybutu bezpośrednio z jakąś wartością, lecz zamiast tego policzyć liczbę bitów w nim zawartych:
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]¶
Modyfikowalna lista katalogów przeszukiwanych w poszukiwaniu importowanych modułów.
Różnica względem CPython
W MicroPython wpis o wartości
".frozen"wskazuje, że w tym miejscu wyszukiwania import powinien przeszukać zamrożone moduły. Jeśli żaden zamrożony moduł nie zostanie znaleziony, wyszukiwanie nie będzie szukać katalogu o nazwie.frozen, lecz przejdzie do następnego wpisu wsys.path.
- sys.platform: str¶
Platforma, na której działa MicroPython. Jest to łańcuch znaków definiowany przez port/płytkę – na przykład
"mimxrt"na OpenMV RT1060 oraz"alif"na OpenMV AE3 (niektóre starsze modele OpenMV Cam zgłaszają łańcuch znaków specyficzny dla modelu, taki jak"OpenMV4-H7"). Aby sprawdzić, czy Twój program działa na MicroPython (a nie na innej implementacji Python), użyj zamiast tegosys.implementation.
- sys.ps1: str¶
Modyfikowalny atrybut zawierający łańcuch znaków używany jako podstawowy znak zachęty REPL. Wartość domyślna daje standardowy znak zachęty Python w postaci
>>>. Zobacz takżesys.ps2dla znaku zachęty kontynuacji.
- sys.ps2: str¶
Modyfikowalny atrybut zawierający łańcuch znaków używany jako znak zachęty kontynuacji REPL. Wartość domyślna daje standardowy znak zachęty Python w postaci
.... Zobacz takżesys.ps1dla podstawowego znaku zachęty.
- sys.tracebacklimit: int¶
Modyfikowalny atrybut zawierający wartość całkowitą będącą maksymalną liczbą wpisów śladu wywołań przechowywanych w wyjątku. Ustaw na 0, aby wyłączyć dodawanie śladów wywołań. Wartość domyślna to 1000.
Uwaga: ten atrybut nie jest dostępny na OpenMV Cam.