Menghuraikan Argumen Baris Perintah Boolean dengan argparse
Apabila menggunakan argparse untuk menghuraikan hujah boolean, pengguna mungkin menghadapi cabaran jika mereka memasukkan nilai sebagai " --foo True" atau "--foo False." Walaupun andaian intuitif bahawa "--foo False" harus menilai kepada False, argparse mentafsirkannya sebagai Benar. Tingkah laku ini juga berlaku apabila memasukkan rentetan kosong untuk hujah boolean.
Untuk menangani isu ini, argparse menyediakan pilihan penghuraian alternatif untuk bendera boolean:
1. Action=argparse.BooleanOptionalAction (Python 3.9 )
Dengan menyatakan action=argparse.BooleanOptionalAction, argparse akan secara automatik mentafsirkan kehadiran bendera tanpa hujah sebagai Benar, dan ketiadaannya sebagai Palsu. Contohnya:
<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
2. Store_True dan Store_False
Untuk versi Python sebelum 3.9, pendekatan berikut boleh digunakan:
<code class="python">parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)</code>
Ini membolehkan pengguna mendayakan atau melumpuhkan ciri dengan menghantar "--feature " atau "--tiada-ciri", masing-masing.
3. Fungsi Jenis Tersuai
Jika mahu, fungsi jenis tersuai boleh digunakan untuk mengendalikan penghuraian boolean. Berikut ialah contoh:
<code class="python">def t_or_f(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: raise ValueError("Invalid input")</code>
Fungsi ini kemudiannya boleh digunakan sebagai hujah jenis apabila menambahkan hujah boolean pada penghurai.
Dengan menggunakan kaedah ini, pengguna boleh menghuraikan perintah boolean dengan berkesan- argumen baris dan pastikan nilai seperti "Salah" ditafsirkan dengan betul.
Atas ialah kandungan terperinci Cara Menghuraikan Argumen Baris Perintah Boolean dengan argparse: Mengapa \'--foo False\' Tidak Sentiasa Bermaksud Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!