Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menghuraikan Nilai Boolean dengan Betul dalam argparse?
Menghuraikan Nilai Boolean dengan argparse
Dalam argparse, menghuraikan hujah baris arahan boolean ialah tugas biasa, tetapi perangkap biasa timbul apabila mencuba untuk menghuraikan nilai seperti "--foo True" atau "--foo False" menggunakan hujah type=bool. Anehnya, walaupun apabila menggunakan rentetan kosong sebagai argumen (cth., "--foo " "), nilai yang dihuraikan dinilai kepada Benar.
Untuk penghuraian Boolean yang betul, argparse menawarkan dua pendekatan yang disyorkan:
Pendekatan Kanonik:
Gunakan sintaks '--feature' dan '--no-feature', disokong secara asli oleh argparse dalam Python 3.9 dan ke atas:
<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
Dalam versi Python di bawah 3.9:
<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>
Dengan pendekatan ini, kehadiran '--feature' menetapkan nilai kepada True, manakala '--no-feature' menetapkannya kepada False. Ketiadaan mana-mana hujah lalai kepada Benar.
Pendekatan Pilihan (Menggunakan Penukaran Jenis):
Jika sintaks "--arg
<code class="python">parser.add_argument("--arg", type=ast.literal_eval)</code>
Sebagai alternatif, fungsi yang ditentukan pengguna boleh dibuat:
<code class="python">def true_or_false(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: raise argparse.ArgumentTypeError('Invalid boolean value')</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Nilai Boolean dengan Betul dalam argparse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!