Subperintah dan Opsi
Bangun CLI yang kompleks
Subperintah dan Opsi adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Mengapa Subperintah?
Alat seperti git memiliki subperintah: git add, git commit. argparse mendukungnya melalui subparser, yang memungkinkan setiap subperintah memiliki argumennya sendiri.
import argparse
parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')Menambahkan Subparser
add_subparsers mengembalikan objek yang metode add_parser-nya membuat setiap subperintah. dest menyimpan subperintah yang dipilih.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)Argumen untuk Setiap Subperintah
Setiap subparser dapat mendefinisikan argumennya sendiri. Subperintah add di sini menerima sebuah nama; list tidak menerima argumen.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)Menentukan Tindakan Berdasarkan Perintah
Setelah penguraian, buat percabangan berdasarkan args.command untuk menjalankan logika yang tepat.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')
args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
print('adding', args.item)
elif args.command == 'clear':
print('clearing all')set_defaults untuk Penangan
Pola yang rapi adalah memasangkan fungsi dengan setiap subparser menggunakan set_defaults(func=...), lalu memanggil args.func(args).
import argparse
def do_hi(args):
print('hi', args.who)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)
args = parser.parse_args(['hi', 'Ana'])
args.func(args)Opsi Bersama melalui Parser Induk
Parser induk menyimpan opsi yang sama untuk beberapa subperintah sehingga tidak perlu ditulis berulang kali. Berikan parents=[base] dan add_help=False.
import argparse
base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)Nilai Bawaan untuk Setiap Opsi
Opsi subperintah dapat memiliki nilai bawaan dan jenisnya sendiri, sama seperti argumen tingkat atas.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)Menambahkan Opsi yang Diulang
action='append' memungkinkan sebuah bendera diberikan beberapa kali dengan mengumpulkan setiap nilai ke dalam daftar.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)Menghitung Bendera
action='count' menghitung berapa kali sebuah bendera muncul, seperti pola klasik -vvv untuk tingkat kerincian.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)Alat dengan Dua Perintah
Menggabungkan subperintah, penangan, dan opsi bersama menghasilkan CLI multi-perintah yang terstruktur.
import argparse
def add(args):
print('add', args.item, 'qty', args.qty)
def remove(args):
print('remove', args.item)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)
args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)Subperintah Wajib
Tetapkan required=True pada subparser agar pengguna wajib memilih sebuah perintah; jika tidak, argparse akan menampilkan kesalahan.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)Pemeriksaan Singkat
Uji pemahaman Anda tentang subperintah dan opsi.
Ringkasan
Anda telah mempelajari subperintah dan opsi:
add_subparsersdanadd_parsermembuat alat multi-perintah.set_defaults(func=...)meneruskan proses ke penangan.- Parser induk berbagi opsi yang umum.
- Tindakan
appenddancountmenangani bendera yang diulang.
Berikutnya: pustaka Click untuk CLI berbasis dekorator.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Subperintah dan Opsi” gratis?
Ya — teks lengkap “Subperintah dan Opsi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Subperintah dan Opsi”?
Bangun CLI yang kompleks Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Subperintah dan Opsi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar argparse
- Subperintah dan Opsi
- Pustaka Click
- Output Terminal yang Kaya