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 keSystemExit.Pada OpenMV Cam,
SystemExityang 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
Noneuntuk menonaktifkan pemanggilan. Fungsiatexitakan mengembalikan nilai sebelumnya yang diatur oleh fungsi ini, yang awalnya adalahNone.Perbedaan dengan CPython
Fungsi ini adalah ekstensi MicroPython yang dimaksudkan untuk menyediakan fungsionalitas serupa dengan modul
atexitdi CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Mencetak pengecualian beserta traceback ke objek seperti file file (atau
sys.stdoutsecara default).Perbedaan dengan CPython
Ini adalah versi sederhana dari fungsi yang terdapat dalam modul
tracebackdi CPython. Berbeda dengantraceback.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. Modultracebackyang kompatibel dengan CPython dapat ditemukan dimicropython-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.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 (sepertibytearray,list, dandict) 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.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 dalamsys.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), gunakansys.implementation.
- sys.ps1: str¶
Atribut yang dapat diubah yang menyimpan string yang digunakan sebagai prompt utama REPL. Default-nya menghasilkan prompt Python standar
>>>. Lihat jugasys.ps2untuk 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 jugasys.ps1untuk prompt utama.