假设我有一个命名空间args
我通过调用获得的parser.parse_args()
,它解析命令行参数。
如何将此命名空间中的所有变量导入到当前命名空间?
e.g.
parser.add_argument('-p', '--some_parameter', default=1)
args = parser.parse_args()
# ... code to load all variables defined in the namespace args ...
print some_parameter
我当然可以这样做:
some_parameter = args.some_parameter
但如果我有大量参数,则每个参数都需要一个这样的行。
是否有另一种方法可以从命名空间导入变量,而不必逐一遍历它们?
PS: from args import *
不起作用。
PS2:我知道这是一个不好的做法,但这在某些极端情况下会有所帮助,例如我们在构建代码和测试原型时very迅速地。
使用以下结果更新您的本地命名空间vars()功能:
globals().update(vars(args))
这一般是not这是个好主意;将这些属性保留在命名空间中。
您可能会产生比使用此方法解决的问题更多的问题,特别是如果您不小心使用dest name隐藏您关心的内置或本地的,例如list
or print
或者其他的东西。享受狩猎的乐趣that bug!
Tim Peters 在他的《Python 之禅》中已经阐述了这一点:
命名空间是一个非常棒的想法——让我们多做一些这样的事情吧!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)