在关键字参数之前,ArgParse的add_argument如何进行可变长度参数?

StackOverflow https://stackoverflow.com/questions/4446275

  •  10-10-2019
  •  | 
  •  

在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的论点定义顺序是...

  1. 必需和/或默认值参数(如果有)
  2. 可变长度的位置参数占位符(*<name> 如果需要)
  3. 关键词参数占位符(**<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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top