gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:59:34 25 4
gpt4 key购买 nike

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

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

现在我想用abc 做一些计算。但是,我觉得一直写 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 对象使用一个较短的名称,或者使用您的剪贴板。 :-)

关于Python:从命名空间中提取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com