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)>}
广告