首頁  >  文章  >  後端開發  >  為什麼使用 argparse 解析布林參數時「--foo False」計算結果為 True?

為什麼使用 argparse 解析布林參數時「--foo False」計算結果為 True?

Linda Hamilton
Linda Hamilton原創
2024-10-26 19:05:29818瀏覽

Why Does

使用argparse 解析布林值

問題:

使用argparse 解析布林命令列參數時,為什麼值會發生參數時,為什麼值會發生參數變化像“--foo False”評估為True 而不是False?

答案:

規範方法:

建議的方法是使用以下格式:

command --feature

建議的方法是使用以下格式:

command --no-feature

要否定該功能,請使用:

  • argparse 對此提供內建支援:
  • Python 3.9 : parser.add_argument('--feature', action= argparse.BooleanOptionalAction)

    parser.add_argument('--feature', action='store_true')
    parser.add_argument('--no-feature', dest='feature', action='store_false')
    parser.set_defaults(feature=True)
  • Python
3.9:

自訂>
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
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval)
parser.add_argument("--my_bool", type=t_or_f)</code>

自我定義的解析方法:如果首選「--foo True/False」格式,則一個選項是使用ast.literal_eval 或自訂函數作為類型:此自訂函數將大寫True/ False 解釋為布林值,允許靈活解析這些值。

以上是為什麼使用 argparse 解析布林參數時「--foo False」計算結果為 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn