是否可以在函数中嵌入 argsparse 解析器?

Is it possible to embed an argsparse parser in a function?

我这样定义一个 argsparse 对象:

parser = argparse.ArgumentParser(description='{desc}', formatter_class=argparse.ArgumentDefaultsHelpFormatter)\
                 .format(desc=description)

然后我添加如下参数:

parser.add_argument("--config", "-c", help='config',
                    default='dbConf').format(dbConf=dbConfig) 

由于我在很多脚本中使用了这两行,所以我想将它们嵌入到一个函数中。 但是,据我了解,parser.add_argument() 会监听命令行。

是否可以将这些行嵌入到函数中?

Is it possible to embed these lines into a function?

是的。 add_argument 根本不与命令行交互 ,但即使这样做也没什么区别。

argparse 与 CLI 输入交互的一位是 the parse_args method,默认情况下它所做的是访问全局 sys.argv 属性并对其进行处理。我默认写 因为你也可以提供一个字符串列表作为第一个参数,它会处理它(如果你点击 link 你会看到官方文档这样做是为了在示例中演示各种内容)。

所以是的,您可以拥有一个创建 ArgumentParser 并开始配置它的函数,然后 returns 它进行更多配置,最后,解析参数。