如何从模块命名空间获取全局变量?

How to get the globals from a module namespace?

有没有办法获取包含特定模块命名空间中的全局变量的字典?如果模块至少包含一个函数,看起来你可以实现它:

import mymodule
d = mymodule.func.__globals__

这样对吗?

有没有更通用的方法? (例如,如果模块不包含任何函数而只包含变量,如何做到这一点?)

我不期待 "What are you trying to do with that? There is probably another way of doing it." 答案;我的问题是理论上的问题。

如果重要的话,Python3 回答对我更感兴趣。

只需使用 vars 即可获取其对应于全局范围的 __dict__

vars(mymodule)

func.__globals__干脆returns这本词典给你看如何:

vars(mymodule) is mymodule.func.__globals__

returns True.