我有两个功能
{{1}}
然而,当我运行script.py -s JohnDoe时 它选择运行函数b,而JohnDoe的问题是什么?
答案 0 :(得分:1)
args = parser.parse_args
缺少运行该方法的()
。否则,您最终会将绑定方法分配给args
。它没有解析任何东西。
dest
参数应该是一个字符串。它是args中属性的名称。如果没有dest
,script.py -s JohnDoe
应生成
In [858]: setattr(args, 's', 'JohnDoe') # done during parsing
In [859]: args # display the args variable
Out[859]: Namespace(s='JohnDoe')
In [860]: args.s
Out[860]: 'JohnDoe'
你可以在
中使用b(arg.s)
它是action
参数,用于确定使用新解析的值完成的操作。默认情况下,如我所示,将其存储在args
中。使用自定义Action
课程可以做更高级的内容,但这是一个高级主题。
dest=b(sys.argv[3])
将dest
设置为b
返回的值,可能是None
。如果b
被定义为
def b(arg):
return arg
然后b(sys.argv[3])
会生成JohnDoe
,您就会得到args
,如下所示:
In [863]: args
Out[863]: Namespace(JohnDoe='JohnDoe')
这是一个可爱的伎俩,但可能不是你想要的。