You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在argparse中实现单独传入flag时设默认值,不传则不设置?

解决方案

直接用argparse自带的参数就能搞定,不用自定义action。调整add_argument的参数即可:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-c',
                    '--cookies',
                    nargs='?',
                    const=5,  # 仅传入-c但不指定数量时的默认值
                    default=None,  # 不传入-c时的默认值
                    type=int,
)

args = parser.parse_args()

if args.cookies is not None:
    print(f'cookies flag is set: {args.cookies}')
else:
    print('cookies flag not set')

逻辑说明

  • 当用户仅输入-c(或--cookies)但不跟数值时,args.cookies会被设为const指定的5
  • 当用户输入-c 25这类带数值的命令时,直接使用指定的数值
  • 完全不传入-c参数时,args.cookies为None,代表用户不需要饼干

之前的问题在于把default设成了5,导致即使没主动请求也会分配默认值。换成None作为default,配合const处理仅传flag的场景,正好匹配你想要的三种情况。

内容的提问来源于stack exchange,提问作者Jon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:30:57