我有以下脚本:
一个.py
print(__builtins__.max)
import b
Run Code Online (Sandbox Code Playgroud)
以及以下模块:
b.py
print(__builtins__.max)
Run Code Online (Sandbox Code Playgroud)
启动它们python3 a.py我得到:
<built-in function max>
Traceback (most recent call last):
File "a.py", line 2, in <module>
import b
File "/home/antonio/Scrivania/b.py", line 1, in <module>
print(__builtins__.max)
AttributeError: 'dict' object has no attribute 'max'
Run Code Online (Sandbox Code Playgroud)
所以我不明白。为什么在脚本__builtins__中分配给内置模块而不是在模块__builtins__中分配给字典?
不要使用__builtins__; 改用builtins模块。
该__builtins__对象是您不应依赖的实现细节。从builtins模块文档:
作为实现细节,大多数模块都将名称
__builtins__作为其全局变量的一部分提供。的值__builtins__通常是此模块或此模块的__dict__属性值。由于这是一个实现细节,它可能不会被 Python 的替代实现使用。
请注意我的重点;您可以在访问时拥有字典或模块对象__builtins__。