首页 > 解决方案 > 为什么 globals()['__builtins__'] 类型在导入时会发生变化?Python 是否为每个模块创建一个新的 __builtins__ 对象?

问题描述

假设我们有一些带有以下代码的模块A :

# A

foo = globals()['__builtins__']

print(foo)
print(type(foo))

运行它会给出输出:

<module 'builtins' (built-in)>
<class 'module'>

但是,如果我们将模块A导入另一个模块B

# B

import A

打印以下内容:

{'__name__': 'A', '__doc__': None, '__package__': '', '__loader__': <_frozen_importlib ...
<class 'dict'>

所以我们的“内置”模块变成了一个字典,而 globals() 的所有其他元素保持不变。了解这背后的机制会很有趣。

标签: pythonpython-importpython-module

解决方案


推荐阅读