Soal 1Apa yang direpresentasikan sys.path?
sys dan argparse — Info Runtime dan Parsing Argumen
Pelajari modul Python sys dan argparse dari dasar. Mulai dari membaca info runtime dengan sys.path / sys.argv / sys.exit hingga membangun parser argumen terstruktur dengan argparse — semuanya praktik langsung.
Artikel ini menelusuri modul sys, yang memberimu akses ke runtime Python, dan modul argparse, yang menstrukturkan argumen command-line. Kamu akan membahas dasar-dasar sys.path / sys.argv / sys.exit, lalu lanjut mendefinisikan argumen dengan konversi tipe, nilai default, dan choices memakai ArgumentParser dari argparse.
Modul sys — Membaca Runtime Python
Modul sys adalah standard library yang memberimu akses ke informasi tentang proses Python yang sedang berjalan. Apa yang bisa diimpor (sys.path), apa yang dilewatkan dari command line (sys.argv), versi dan platform Python (sys.version / sys.platform), dan cara menghentikan proses (sys.exit) — informasi dan fungsi tentang Python itu sendiri semuanya ada di sini.
| Atribut / Fungsi | Tipe | Arti |
|---|---|---|
| sys.path | list[str] | Daftar folder tempat import mencari modul |
| sys.argv | list[str] | Daftar argumen command-line yang dilewatkan |
| sys.version | str | String versi Python |
| sys.platform | str | Pengenal OS ('darwin' / 'linux' / 'win32', dll.) |
| sys.exit(code) | function | Hentikan proses dengan exit code yang diberikan |
| sys.stdout | TextIO | Standard output. Tempat print menulis |
`sys.path` adalah daftar folder yang dicari import untuk modul, dipindai berurutan dari atas. Dengan for p in sys.path: kamu bisa mencetak setiap folder yang terdaftar baris per baris. Di runtime Pyodide kamu akan melihat path seperti /lib/python312.zip / /lib/python3.12 / /lib/python3.12/lib-dynload / /lib/python3.12/site-packages, sedangkan instalasi Python biasa mendaftarkan folder standard library dan site-packages (tempat library yang dipasang via pip).
sys.platform adalah atribut yang mengembalikan pengenal OS sebagai string. Di runtime Pyodide browser ia menampilkan emscripten (di mesin nyata kamu akan melihat darwin (Mac) / win32 (Windows) / linux). Dipakai saat kamu perlu bercabang berdasarkan sistem operasi.
import sys
print("Platform:", sys.platform)
# Mac: Platform: darwin
# Windows: Platform: win32
# Linux: Platform: linux
# Browser: Platform: emscripten
sys.argv dan argparse — Menangani Argumen Command-Line
Di instalasi Python nyata, saat kamu menjalankan command seperti python script.py user_name 42, token-token mendarat di sys.argv sebagai list of strings. sys.argv[0] adalah nama script, dan sys.argv[1:] berisi argumen yang kamu lewatkan. Modul argparse adalah standard library yang membaca sys.argv dan mengonversinya menjadi objek yang bisa kamu akses lewat atribut, membuatmu bisa mendeklarasikan konversi tipe, nilai default, dan pembatasan choice secara rapi.
sys.argv. Entry pertama adalah nama script, jadi argumen sebenarnya mulai di sys.argv[1:].# script.py (dimaksudkan untuk berjalan di instalasi Python nyata)
import sys
print(sys.argv)
# Contoh: menjalankan python script.py user_name 42 menghasilkan
# ['script.py', 'user_name', '42']
# Argumen sebenarnya mulai di [1:]
args = sys.argv[1:]
print(args) # ['user_name', '42']
sys.argv pada dasarnya kosong di browser
Runtime browser yang dipakai seri ini sama sekali tidak punya command line, jadi sys.argv hanya berisi nilai tetap seperti ['<exec>']. Lihat perilaku mesin nyata di blok code di atas; di praktik langsung kamu akan menggantikannya dengan melewatkan list langsung sebagai pengganti sys.argv.
Begitu kamu mulai mengurai `sys.argv` secara manual, kamu langsung kena kebutuhan seperti mengonversi string ke angka, mendukung flag opsional, atau mencetak pesan usage dengan --help. Python menyertakan argparse sebagai standard library untuk menangani semua ini untukmu, dan alur dasarnya tiga langkah — buat ArgumentParser, daftarkan argumen yang ingin kamu terima dengan add_argument, lalu konversi mereka menjadi nilai dengan parse_args.
# Gaya Python mesin nyata
import argparse
parser = argparse.ArgumentParser(description="Product search CLI")
parser.add_argument("--keyword", required=True) # lewatkan sebagai --keyword Apple
parser.add_argument("--limit", type=int, default=10) # otomatis dikonversi ke int
args = parser.parse_args() # membaca sys.argv[1:]
print(args.keyword, args.limit)
--keyword Apple --limit 5 menjadi objek yang bisa kamu akses lewat atribut sebagai args.keyword / args.limit.Di browser, pakai bentuk parse_args(list)
Karena runtime browser tidak punya sys.argv, memanggil parse_args() tanpa argumen melempar error. Pakai bentuk pelewatan list yang sama yang akan kamu pakai di tes — parse_args(["--keyword", "Apple", "--limit", "5"]). Di mesin nyata, menghilangkan list itu otomatis memakai sys.argv[1:].
argparse Lebih Dalam — Konversi Tipe, Default, Choices
add_argument punya beberapa opsi yang mengontrol bagaimana argumen berperilaku. Empat di antaranya mencakup hampir setiap use case CLI praktis.
| Opsi | Efek | Contoh |
|---|---|---|
| type | Konversi string yang diterima ke tipe lain | type=int → '5' jadi 5 |
| default | Nilai default saat argumen dihilangkan | default=10 |
| required | Buat wajib; error jika hilang | required=True |
| choices | Batasi ke list nilai yang diizinkan | choices=['asc', 'desc'] |
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--keyword", required=True)
parser.add_argument("--limit", type=int, default=10)
parser.add_argument("--order", choices=["asc", "desc"], default="asc")
args = parser.parse_args(["--keyword", "Apple", "--limit", "5", "--order", "desc"])
print(args.keyword, args.limit, args.order)
# -> Apple 5 desc
Menggabungkan type dan default
Saat kamu menentukan keduanya type=int, default=10, argumen mendapat 10 (int) saat dihilangkan, dan nilai yang dilewatkan dikonversi ke int saat diberikan. Nilai default tidak dijalankan lewat konversi tipe, jadi tulis default langsung dalam tipe target. Menulis default="10" akan memasukkan string "10" hanya saat argumen dihilangkan — bug yang halus.
sys.exit — Mengembalikan Exit Code
sys.exit(code) adalah fungsi yang mengambil angka dan menghentikan proses. Secara konvensi, 0 berarti sukses dan nilai non-nol apa pun (biasanya 1) berarti gagal, dan sistem CI dan shell script bercabang berdasarkan nilai ini untuk memutuskan apa selanjutnya. Di balik layar, ia me-raise exception SystemExit. Kamu bisa menangkapnya dengan try / except, tapi biasanya kamu membiarkannya merambat supaya proses keluar.
import sys
price = -100
if price < 0:
print("Error: harga negatif")
sys.exit(1) # tidak ada yang berjalan setelah titik ini
print("Lanjut...") # hanya jalan saat price >= 0
sys.exit(0) memberi sinyal sukses dan sys.exit(1) memberi sinyal gagal ke pemanggil (shell atau CI). Di mesin nyata kamu bisa cek exit code dengan $? di shell. Jika kamu tidak memanggil sys.exit, script jalan sampai baris terakhir.Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Manakah yang paling tepat menggambarkan sys.exit(1)?
Soal 3Saat kamu ingin mencoba argparse di browser, pendekatan mana yang bisa kamu pakai sebagai pengganti sys.argv?