Python:从命名空间中提取变量

2023-11-27

我在 python 中使用 argparse 来解析命令行参数:

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

现在我想做一些计算a, b, and 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对象,或使用剪贴板。 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:从命名空间中提取变量 的相关文章

随机推荐