Python 中的内置对象(builtins)


每次启动 Python 解释器时,都会自动加载 builtins 模块,无论是作为顶级执行环境还是作为交互式会话。作为所有 Python 对象的基类的 Object 类在此模块中定义。所有内置数据类型类(如数字、字符串、列表等)都在此模块中定义。它还定义了 BaseException 类及所有内置异常。此外,所有内置函数也在 built-ins 模块中定义。

由于此模块会自动导入到当前会话中,通常不会对其进行显式导入。所有在可执行代码中使用的内置函数都被默认认为来自 built-ins 模块。例如

>>> len('hello')
5

与以下命令隐含等价

>>> import builtins
>>> builtins.len('hello')
5

然而,当存在与内置函数同名的用户自定义函数时,需要显式导入该函数。Python 解释器给予用户自定义函数更高的优先级。因此,如果代码同时包含用户自定义函数和同名内置函数,则后者必须以内置模块为前缀。

def len(string):
print ('local len() function')
print ('calling len() function in builtins module')
import builtins
l = builtins.len(string)
print ('length:',l)
string = "Hello World"
len(string)

输出

local len() function
calling len() function in builtins module
length: 11

大多数模块都有以 __builtins__ 命名的部分,作为其全局部分提供。 __builtins__ 的值通常是该模块或该模块的 __dict__ 属性值。

>>> import math
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'math': <module 'math' (built-in)>}

更新日期: 2020 年 6 月 27 日

2 千次浏览

开启您的 职业生涯

完成课程即可获得认证

开始学习
广告