在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
行为的正确方法是什么?
答案 0 :(得分:3)
Python的参数定义顺序是......
*<name>
)**<name>
)位置参数占位符获取一个列表,关键字参数占位符获取一个字典。
add_arguments
只是在关键字参数的字典中查找键,而不是在声明中拼写出所有可能的参数。有些东西......
def add_arguments(*posargs, **kwargs):
if 'action' in kwargs:
# do something
答案 1 :(得分:2)
您可以将任意数量的参数传递给函数。
这是一个例子
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。