我正在使用Python中的ArgParse来解析命令行参数:

parser = ArgumentParser()
parser.add_argument("--a")
parser.add_argument("--b")
parser.add_argument("--c")
args = parser.parse_args()

现在我想对 a, b, , 和 c. 。但是,我觉得写很累 args.a + args.b + args.c 每时每刻。

因此,我正在提取这些变量:

a, b, c = [args.a, args.b, args.c]

这样我可以写 a + b + c.

有什么更优雅的方式吗?

在添加许多参数时,手动提取非常乏味和错误。

有帮助吗?

解决方案

如果您希望它们作为全球群体,则可以这样做:

globals().update(vars(args))

如果您处于功能并希望它们作为该功能的本地变量,则可以在Python 2.x中执行此操作:如下:

def foo(args):
   locals().update(vars(args))       
   print a, b, c
   return
   exec ""  # forces Python to use a dict for all local vars
            # does not need to ever be executed!  but assigning
            # to locals() won't work otherwise.

这个技巧在Python 3中不起作用, exec 不是陈述,也不可能在其他Python变体中,例如Jython或Ironpython。

总的来说,我建议只使用一个较短的名称 args 对象,或使用剪贴板。 :-)

其他提示

您可以通过致电将内容添加到本地范围 locals(). 。它返回代表当前可用范围的字典。您也可以为其分配值 - locals()['a'] = 12 会导致 a 在本地范围中,值为12。

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