每次启动Python解释器时,内置模块都会自动加载,无论是作为顶层执行环境还是作为交互式会话。在此模块中定义了Object类,该类恰好是所有Python对象的基类。在此模块中定义了所有内置数据类型类,例如数字,字符串,列表等。还定义了BaseException类以及所有内置的异常。此外,所有内置功能也在内置模块中定义。
由于此模块是在当前会话中自动导入的,因此通常不会显式导入。默认情况下,可执行代码中使用的所有内置函数都被视为来自内置模块。例如
>>> 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)>}