有没有一种方法可以获取特定模块命名空间中包含全局变量的字典?看起来,如果该模块包含至少一个函数并且使用以下内容,则可以实现:
import mymodule
d = mymodule.func.__globals__
这样做正确吗?
有更通用的方式吗?(例如,如果模块不包含任何函数而只包含变量,该如何处理?)
我并不希望得到一个“你想用那个做什么?可能还有其他方法。”的回答;我的问题更多是理论上的。
如果有影响的话,我更感兴趣的是Python3的答案。
有没有一种方法可以获取特定模块命名空间中包含全局变量的字典?看起来,如果该模块包含至少一个函数并且使用以下内容,则可以实现:
import mymodule
d = mymodule.func.__globals__
这样做正确吗?
有更通用的方式吗?(例如,如果模块不包含任何函数而只包含变量,该如何处理?)
我并不希望得到一个“你想用那个做什么?可能还有其他方法。”的回答;我的问题更多是理论上的。
如果有影响的话,我更感兴趣的是Python3的答案。
只需使用vars
,它会抓取其对应于全局作用域的__dict__
。
vars(mymodule)
func.__globals__
仅为您返回此字典,如下所示:
vars(mymodule) is mymodule.func.__globals__
返回 True
。
__dict__
。我一直更喜欢__dict__
。少了一个括号嵌套的层级。 - user2357112__dict__
可能永远不会改变,但我还是有点多虑)。 - Dimitris Fasarakis Hilliard