builtins 模块是 Python 的核心模块之一,包含了所有内置函数、内置异常类和一些常用对象的定义。当我们在 Python 中直接调用如 print()、len()、int()、isinstance() 等函数时,其实都是从 builtins 模块中自动导入的。

虽然通常不需要显式导入 builtins,但我们可以通过导入它来自省检查、重写或封装内置函数。

常见应用场景:

(1)查看或重写内置函数(如禁用 eval())。

(2)元编程与沙箱(控制可访问的全局函数)。

(3)动态检查对象的类型或行为。

(4)教学或调试工具开发(查看所有内置函数和类)。

◆ ◆

核心概念

1、所有 builtins 中的成员在 Python 启动时自动可用。

2、包含内置函数、内置类型(如 int、str)和异常(如 ValueError)。

比如,abs()、print()、len()、range()、int()、str()、isinstance()、sum()、open()、input()、type() 等函数都来自于 builtins 模块。

3、可通过 import builtins 显式访问、修改或覆盖内置功能。

◆ ◆

应用举例

例 1: 查看所有内置名称

import builtins

print(dir(builtins))  # 打印所有内置函数、类和异常

例 2:自定义内置函数(不推荐生产环境使用)

import builtins

# 备份原始 print 函数
original_print = builtins.print

# 暂时禁用 print
builtins.print = lambda *args, **kwargs: None
print("这行不会被输出")

# 恢复原 print
builtins.print = original_print
print("恢复正常")

例 3:使用 builtins 中的异常类

import builtins

try:
    raise builtins.ValueError("这是一个测试错误")
except builtins.ValueError as e:
    print("捕获到异常:", e)

例 4:模拟只读环境(限制 eval

import builtins

# 屏蔽危险函数
builtins.eval = lambda *args: (_ for _ in ()).throw(RuntimeError("禁止使用 eval"))

# 测试
try:
    eval("2 + 2")
except RuntimeError as e:
    print(e)

例 5:获取所有内置函数列表

import builtins
import types

functions = [name for name in dir(builtins)
             if isinstance(getattr(builtins, name), types.BuiltinFunctionType)]
print(functions)

◆ ◆

补充说明

1、builtins 实际上对应于模块 __builtin__(Python 2)在 Python 3 中的替代。

2、虽然所有内置函数都来源于 builtins,但不要滥用重定义操作,否则会影响全局行为。

3、一些 IDE 或调试工具通过访问 builtins 来获取自动补全与类型信息。

点赞有美意,赞赏是鼓励