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 来获取自动补全与类型信息。
“点赞有美意,赞赏是鼓励”
热门跟贴