sys --- fungsi-fungsi khusus sistem

Modul ini menyediakan akses ke variabel dan fungsi khusus interpreter, termasuk argumen baris perintah, jalur pencarian modul, aliran standar, dan informasi tentang implementasi yang sedang berjalan.

Fungsi

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

Mengakhiri program saat ini dengan kode keluar tertentu. Secara internal, fungsi ini memunculkan pengecualian SystemExit. Jika argumen diberikan, nilainya diteruskan sebagai argumen ke SystemExit.

Pada OpenMV Cam, SystemExit yang tidak ditangani saat ini menyebabkan Soft Reset pada MicroPython.

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

Mendaftarkan func untuk dipanggil saat program berakhir. func harus berupa callable yang tidak menerima argumen, atau None untuk menonaktifkan pemanggilan. Fungsi atexit akan mengembalikan nilai sebelumnya yang diatur oleh fungsi ini, yang awalnya adalah None.

Perbedaan dengan CPython

Fungsi ini adalah ekstensi MicroPython yang dimaksudkan untuk menyediakan fungsionalitas serupa dengan modul atexit di CPython.

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

Mencetak pengecualian beserta traceback ke objek seperti file file (atau sys.stdout secara default).

Perbedaan dengan CPython

Ini adalah versi sederhana dari fungsi yang terdapat dalam modul traceback di CPython. Berbeda dengan traceback.print_exception(), fungsi ini hanya menerima nilai pengecualian alih-alih tipe pengecualian, nilai pengecualian, dan objek traceback; argumen file harus berupa argumen posisional; argumen lebih lanjut tidak didukung. Modul traceback yang kompatibel dengan CPython dapat ditemukan di micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Mengaktifkan pelacakan eksekusi bytecode. Untuk detailnya lihat dokumentasi CPython.

Fungsi ini tidak tersedia di OpenMV Cam. Fungsi ini dinonaktifkan secara default karena memperlambat eksekusi kode; mengaktifkannya memerlukan pembangunan firmware khusus.

Konstanta

sys.argv: list[str]

Daftar yang dapat diubah berisi argumen-argumen yang digunakan saat memulai program saat ini.

sys.byteorder: str

Urutan byte sistem ("little" atau "big").

sys.implementation: object

Objek yang berisi informasi tentang implementasi Python saat ini. Untuk MicroPython, objek ini memiliki atribut-atribut berikut:

  • name - string "micropython"

  • version - tuple (major, minor, micro, releaselevel), mis. (1, 22, 0, '')

  • _machine - string yang mendeskripsikan mesin yang mendasarinya

  • _mpy - versi format file mpy yang didukung (atribut opsional)

  • _build - string yang dapat membantu mengidentifikasi konfigurasi yang digunakan untuk membangun MicroPython

  • _thread - atribut string opsional, ada jika target mendukung threading dan nilainya adalah "GIL" atau "unsafe"

Objek ini adalah cara yang disarankan untuk membedakan MicroPython dari implementasi Python lainnya (perlu diperhatikan bahwa objek ini mungkin tidak ada pada port yang sangat minimal).

Mulai versi 1.22.0-preview, node keempat releaselevel dalam implementation.version adalah string kosong atau "preview".

Entri _build ditambahkan pada versi 1.25.0 dan merupakan sekumpulan elemen yang dipisahkan tanda hubung. Elemen baru mungkin ditambahkan di masa mendatang, sehingga sebaiknya akses bidang ini menggunakan sys.implementation._build.split("-"). Elemen yang saat ini digunakan adalah:

  • Pada OpenMV Cam, elemen pertama adalah nama board dan elemen kedua (jika ada) adalah varian board.

Entri _thread ditambahkan pada versi 1.26.0 dan jika ada, berarti target memiliki modul _thread. Jika target mengaktifkan GIL (global interpreter lock), atribut ini bernilai "GIL". Jika tidak, atribut ini bernilai "unsafe", artinya target memiliki threading tetapi tidak mengaktifkan GIL, sehingga objek Python yang dapat diubah (seperti bytearray, list, dan dict) yang digunakan bersama antar thread harus dilindungi secara eksplisit menggunakan lock seperti _thread.allocate_lock.

Perbedaan dengan CPython

CPython mewajibkan lebih banyak atribut untuk objek ini, tetapi minimum yang benar-benar berguna telah diimplementasikan di MicroPython.

sys.maxsize: int

Nilai maksimum yang dapat ditampung oleh tipe integer native pada platform saat ini, atau nilai maksimum yang dapat direpresentasikan oleh tipe integer MicroPython, jika lebih kecil dari nilai maksimum platform (hal ini berlaku untuk port MicroPython tanpa dukungan long int).

Atribut ini berguna untuk mendeteksi "bitness" suatu platform (32-bit vs 64-bit, dll.). Disarankan untuk tidak membandingkan atribut ini langsung dengan suatu nilai, melainkan menghitung jumlah bit di dalamnya:

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

Kamus modul yang telah dimuat. Pada OpenMV Cam, ini tidak mencakup modul bawaan.

sys.path: list[str]

Daftar yang dapat diubah berisi direktori-direktori untuk mencari modul yang diimpor.

Perbedaan dengan CPython

Pada MicroPython, entri dengan nilai ".frozen" menunjukkan bahwa impor harus mencari frozen modules pada titik tersebut dalam pencarian. Jika tidak ditemukan modul frozen, pencarian tidak akan mencari direktori bernama .frozen, melainkan akan melanjutkan ke entri berikutnya dalam sys.path.

sys.platform: str

Platform tempat MicroPython berjalan. Ini adalah string yang ditentukan oleh port/board -- misalnya "mimxrt" pada OpenMV RT1060 dan "alif" pada OpenMV AE3 (beberapa OpenMV Cam yang lebih lama melaporkan string khusus model seperti "OpenMV4-H7"). Untuk memeriksa apakah program Anda berjalan di MicroPython (dibanding implementasi Python lainnya), gunakan sys.implementation.

sys.ps1: str

Atribut yang dapat diubah yang menyimpan string yang digunakan sebagai prompt utama REPL. Default-nya menghasilkan prompt Python standar >>>. Lihat juga sys.ps2 untuk prompt kelanjutan.

sys.ps2: str

Atribut yang dapat diubah yang menyimpan string yang digunakan sebagai prompt kelanjutan REPL. Default-nya menghasilkan prompt Python standar .... Lihat juga sys.ps1 untuk prompt utama.

sys.stderr: object

Aliran stream error standar.

sys.stdin: object

Aliran stream input standar.

sys.stdout: object

Aliran stream output standar.

sys.tracebacklimit: int

Atribut yang dapat diubah yang menyimpan nilai integer sebagai jumlah maksimum entri traceback yang akan disimpan dalam suatu pengecualian. Atur ke 0 untuk menonaktifkan penambahan traceback. Default-nya adalah 1000.

Catatan: atribut ini tidak tersedia pada OpenMV Cam.

sys.version: str

Versi bahasa Python yang sesuai dengan implementasi ini, sebagai string.

sys.version_info: tuple

Versi bahasa Python yang sesuai dengan implementasi ini, sebagai tuple integer.

Perbedaan dengan CPython

Hanya tiga nomor versi pertama (major, minor, micro) yang didukung dan hanya dapat direferensikan berdasarkan indeks, bukan nama.