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.