Python:提取变量以外的名称空间
-
25-10-2019 - |
题
我正在使用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。
不隶属于 StackOverflow