我想检查用户是否设置了可选的argparse参数。

我可以安全地使用isset检查吗?

像这样:

if(isset(args.myArg)):
    #do something
else:
    #do something else

这对于float/int/string类型参数是否起作用?

我可以设置一个默认参数并进行检查(例如,设置myArg = -1,或为字符串““或” NOT_SET“)。但是,我最终要使用的值仅在脚本的稍后部分计算。因此,我会将其默认设置为-1,然后稍后将其更新为其他内容。与仅检查该值是否由用户设置相比,这似乎有点笨拙。

最佳答案

我认为,如果未提供可选参数(用--指定),则会初始化为None。因此,您可以使用is not None进行测试。请尝试以下示例:

import argparse as ap

def main():
    parser = ap.ArgumentParser(description="My Script")
    parser.add_argument("--myArg")
    args, leftovers = parser.parse_known_args()

    if args.myArg is not None:
        print "myArg has been set (value is %s)" % args.myArg

07-28 07:57