Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah \'--foo False\' Menilai kepada Benar Apabila Menghuraikan Argumen Boolean dengan argparse?

Mengapakah \'--foo False\' Menilai kepada Benar Apabila Menghuraikan Argumen Boolean dengan argparse?

Linda Hamilton
Lepaskan: 2024-10-26 19:05:29
asal
913 orang telah melayarinya

Why Does

Menghuraikan Nilai Boolean dengan argparse

Soalan:

Apabila menghuraikan argumen baris arahan boolean dengan argparse, mengapa nilai seperti "--foo False" menilai kepada Betul dan bukannya Salah?

Jawapan:

Kaedah Kanonik:

The pendekatan yang disyorkan ialah menggunakan format berikut:

command --feature
Salin selepas log masuk

Untuk menafikan ciri, gunakan:

command --no-feature
Salin selepas log masuk

argparse menyediakan sokongan terbina dalam untuk ini:

  • Python 3.9 : parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
  • Python < 3.9:

    parser.add_argument('--feature', action='store_true')
    parser.add_argument('--no-feature', dest='feature', action='store_false')
    parser.set_defaults(feature=True)
    Salin selepas log masuk

Kaedah Alternatif untuk Penghuraian Tersuai:

Jika format "--foo True/False" diutamakan, satu pilihan ialah menggunakan ast.literal_eval atau fungsi tersuai sebagai jenis:

import ast

def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
        return True
    elif 'FALSE'.startswith(ua):
        return False
    else:
        pass  # Handle error condition appropriately
Salin selepas log masuk
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval)
parser.add_argument("--my_bool", type=t_or_f)</code>
Salin selepas log masuk

Fungsi tersuai ini mentafsirkan huruf besar Benar/Salah sebagai nilai boolean, membenarkan penghuraian fleksibel bagi nilai ini.

Atas ialah kandungan terperinci Mengapakah '--foo False' Menilai kepada Benar Apabila Menghuraikan Argumen Boolean dengan argparse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan