在关键字参数之前,ArgParse的add_argument如何进行可变长度参数?
题
在Python2.7中,ArgParse模块具有add_argument方法,该方法可以在其关键字参数之前采用可变数量的未命名参数,如下所示:
parser = argparse.ArgumentParser(description='D')
parser.add_argument('-a', '-b', ... '-n', action='store', ... <other keyword args>)
据我所知,功能定义以下是不起作用的:
def fxn(var_args*, action, otherstuff):
def fxn(action, otherstuff, var_args*): # results in conflict on action
正确效仿的含义是什么 add_argument
行为?
解决方案
Python的论点定义顺序是...
- 必需和/或默认值参数(如果有)
- 可变长度的位置参数占位符(
*<name>
如果需要) - 关键词参数占位符(
**<name>
如果需要)
位置论点占位符获得列表,关键词参数占位符获得命令。
add_arguments
只是在关键字参数的dict中寻找键,而不是阐明声明中的所有可能参数。沿...
def add_arguments(*posargs, **kwargs):
if 'action' in kwargs:
# do something
其他提示
您可以将任意数量的参数传递给函数。
这是一个例子
def f(x, *args, **kwargs):
print x
for arg in args:
print arg
for key, value in kwargs:
print key + ': ' + value
阅读这将有所帮助: http://docs.python.org/tutorial/controlflow.html#keyword-arguments.
不隶属于 StackOverflow