通过 __builtins__ 访问内置函数

zer*_*uno 4 python python-3.x

我有以下脚本:

一个.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__中分配给字典?

Mar*_*ers 6

不要使用__builtins__; 改用builtins模块

__builtins__对象是您不应依赖的实现细节。从builtins模块文档:

作为实现细节,大多数模块都将名称__builtins__作为其全局变量的一部分提供。的值__builtins__通常是此模块或此模块的__dict__属性值。由于这是一个实现细节,它可能不会被 Python 的替代实现使用。

请注意我的重点;您可以在访问时拥有字典或模块对象__builtins__