我想检查用户是否设置了可选的argparse参数。
我能用isset安全检查吗?
像这样的:
if(isset(args.myArg)):
#do something
else:
#do something else
对于float/int/string类型的参数,这是否也同样有效?
我可以设置一个默认参数并检查它(例如,设置myArg=-1,或“”作为字符串,或“NOT_set”)。但是,我最终想要使用的值只在脚本的后面计算。所以我会将它设置为-1作为默认值,然后稍后将其更新为其他值。与简单地检查该值是否由用户设置相比,这似乎有点笨拙。
我认为使用选项
default=argparse.SUPPRESS
最有意义。然后,不检查参数是否为not None
,而是检查参数是否为生成的命名空间in
。示例:
用法:
未提供参数:我认为,如果没有提供可选参数(用
--
指定),则将其初始化为None
。所以你可以用is not None
来测试。请尝试以下示例:正如@Honza所说,
is None
是一个很好的测试。它是默认的default
,用户不能给您一个重复它的字符串。您可以指定另一个
default='mydefaultvalue
,并对此进行测试。但是如果用户指定了这个字符串呢?这算不算设置?您还可以指定
default=argparse.SUPPRESS
。然后,如果用户不使用参数,它将不会出现在args
命名空间中。但测试可能更复杂:在内部,
parser
保存一个seen_actions
列表,并将其用于“必需”和“互斥”测试。但它在parse_args
之外是不可用的。相关问题 更多 >
编程相关推荐