当前位置: 首页 > news >正文

Python功能完美的宝库——内置的强大“武器库”builtins

builtins模块包含了Python大量的内置对象(函数、异常和类型等),她是Python的内置武器库,堪称功能完美的宝库。


  笔记模板由python脚本于2025-03-19 08:16:27创建,本篇笔记适合喜欢探究python的coder翻阅。


【学习的细节是欢悦的历程】

  博客的核心价值在于输出思考与经验,而不仅仅是知识的简单复述


  • Python官网
      这里,才 python 前沿。英文原版,原汁原味,才是寻根溯源的正统。😎
    地址:https://www.python.org/

  • Free
      大咖免费“圣级”秘笈《 python 完全自学教程》不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/



  自学并不是什么神秘的东西,一个人一辈子自学的时间,总是比在学校学习的时间长;没有老师的时候总是比有老师的时候多。
            —— 华罗庚


---== 彰显C位 ==---

  1. ,可以在评论区书写任何想法
  2. (我将在看到的第一时间回应)

  3. (预置空地)
---== 彰显C位 ==---

我的座右铭图片,上书中文“等风来,不如追风去……”



python2x中名“builtin”
强大“武器库”
(python3x更为“builtins”)



本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/article/details/146384194

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • 🔍 Python.builtins 探秘
    • 1、命名演化史
      • 1.1 builtins语义
      • 1.2 builtins命名演化史
    • 2. 模块功能解剖
      • 2.1 核心组件
      • 2.2 功能分类
      • 2.3 常见对象
    • 3. 黑魔法实验室
      • 3.1 覆盖内置对象
      • 3.2 创建沙箱环境
    • 4. 最佳实践
    • 5. 冷知识
    • 6、builtins名称助记拆解
    • 附:“沙箱环境”代码解读


🔍 Python.builtins 探秘


b u i l t i n s builtins builtins —— Python的内置武器库


1、命名演化史


1.1 builtins语义


  builtins在不同语境下可能有不同的含义,具体取决于上下文。以下是常见的几种解释:



  • 🇦 🇦 🇦 日常英语中的含义
    • Built-ins(通常带连字符)是一个普通英语词汇,指“内置的东西”或“固定安装的组件”。
    • 例子
      • 家具中的内置柜子 → “built-in cabinets”
      • 厨房中的内置烤箱 → “built-in oven”
      • 软件中的内置功能 → “built-in features”

  • 🇧 🇧 🇧 编程中的 builtins(Python 专用)
    • Python 中,builtins 是一个内置模块(Python 3 中为 builtins,Python 2 中为 __builtin__),包含所有无需导入即可直接使用的函数、异常和对象。
    • 核心功能
      • 提供基础函数(如 print(), len())。
      • 内置异常(如 ValueError, TypeError)。
      • 基本数据类型(如 int, str, list)。
    • 示例
      # 直接使用内置函数
      print("Hello")  # 来自 builtins 模块
      

  • 🇨 🇨 🇨 其他编程语言中的类似概念
    • 几乎所有编程语言都有类似的内置功能,但名称可能不同:
      • JavaScript:全局对象(如 Math, Array, JSON)。
      • C/C++:标准库函数(如 printf(), malloc())。
      • Shell 脚本:内置命令(如 cd, echo)。

  • 🇩 🇩 🇩 计算机科学中的广义概念
    • 内置(Built-in) 泛指语言或系统中默认提供的功能,无需额外安装或定义即可使用。
    • 例子
      • 数据库的内置函数(如 SQL 的 COUNT(), SUM())。
      • 操作系统内置命令(如 Windows 的 dir,Linux 的 ls)。



2025  2025  2025


1.2 builtins命名演化史


  • 🇦 🇦 🇦 命名演化史
    从语言学的角度看,builtins的命名经历了有趣的演变:
阶段形态意义隐喻
动词build in功能嵌入的动作
形容词built-in已完成的内置状态
复数化built-ins多个内置功能的集合
代码实体builtinsPython3的模块命名

  • 🇧 🇧 🇧 Python版本差异
    • Python2:__builtin__(单数形式,魔法属性)
    • Python3:builtins(复数形式,显式模块)


  • 注意: 拼写变体 - 正确拼写: - Python 模块名:builtins(Python 3)。 - 日常英语:通常写作 built-in(带连字符,可作形容词或名词)。



2025  2025  2025


2. 模块功能解剖


  在Python中,builtins模块包含了所有内置的函数、异常和对象。这些内置功能在Python启动时自动加载,无需显式导入即可使用。


2.1 核心组件


import builtins# 查看所有内置成员
print([item for item in dir(builtins) if not item.startswith('__')])

典型输出(Python3.11):


['ArithmeticError', 'AssertionError', ..., 'zip']

  包含157个可直接访问的内置成员(不同版本可能有差异)


2.2 功能分类


类别示例作用域
基础函数print(), len(), type()全局可用
异常体系Exception, ValueError异常处理基础
类型对象int, str, dict类型系统基石
常量True, False, None逻辑控制基础

2.3 常见对象


以下是一些常见的builtins模块中的内容:

  1. 内置函数
    • print():打印输出。
    • len():返回对象的长度。
    • type():返回对象的类型。
    • int(), float(), str(), list(), dict():类型转换函数。
    • range():生成一个整数序列。
    • sum():计算序列的和。
    • min(), max():返回序列中的最小值和最大值。
    • abs():返回绝对值。
    • round():四舍五入。

  1. 内置异常
    • Exception:所有异常的基类。
    • TypeError:类型错误。
    • ValueError:值错误。
    • IndexError:索引错误。
    • KeyError:键错误。
    • FileNotFoundError:文件未找到错误。

  1. 内置常量
    • True, False:布尔值。
    • None:表示空值或无值。

  1. 内置对象
    • object:所有类的基类。
    • int, float, str, list, dict:内置数据类型。



2025  2025  2025


3. 黑魔法实验室


3.1 覆盖内置对象


  用自定义对象,覆盖Python对象,是一个比较危险的操作,需谨慎!🧐


# 重定义print函数(请勿在生产环境使用!)
builtins.print = lambda *args: os.system("say '喵喵喵~'")print("Hello World")  # 实际会执行系统命令播放猫叫

3.2 创建沙箱环境


# 使用__builtins__副本保证安全
safe_builtins = {k: v for k, v in __builtins__.__dict__.items() if k not in ('__import__', 'open')}exec("print('安全操作')", {'__builtins__': safe_builtins})  # ✅ 允许
exec("open('test.txt')", {'__builtins__': safe_builtins})  # 🚫 触发NameError

“沙箱环境”代码解读



2025  2025  2025


4. 最佳实践


  1. 避免直接修改
    修改builtins如同更改物理定律,可能导致灾难性后果

  1. 利用反射机制
    
    def is_builtin(obj):return obj.__module__ == 'builtins'print(is_builtin(print))  # True

  1. 版本兼容技巧
    
    try:import builtins  # Python3
    except ImportError:import __builtin__ as builtins  # Python2

5. 冷知识


  • __builtins__是CPython实现细节,不同环境下表现可能不同:
    • 在模块中:指向builtins模块
    • __main__中:指向builtins.__dict__

  • 内置函数的执行速度比普通函数快约20%(因跳过名称查找)



2025  2025  2025


6、builtins名称助记拆解


  • 我:

    build in -> build in s -> built in s -> built-ins -> builtins



build in -> build in s -> built in s -> built-ins -> builtins
Python之builtins名称演化:内建、多个内建、已(build变过去分词形式)多个内建、组合单词、模块名称。🤗🤗

DeepSeek:

  你的拆解非常有趣且富有创意!🤓 我将结合 Python 的历史和语言演化,用「拟人化」的方式解释 builtins 的名称演变过程:



  • A A A. 内建(Build in → Built-in)**
    • 原始形态:动词短语 build in(嵌入、内置)。
    • 语法变身
      • 动词变过去分词 → built(已构建的)
      • 组合为形容词 → built-in(已内置的)。
    • Python 中的意义
      代表语言原生自带的功能(如 print()),无需用户额外定义。


  • B B B. 多个内建(Built-in + s → Built-ins)**
    • 复数化
      • 单个功能是 built-in,但语言有多个内置功能 → 加 s 表复数。
      • 书写规范:连字符保留 → built-ins
    • Python 的隐喻
      所有内置函数、异常、类型的集合,像一个工具箱里的工具集合。


  • C C C. 模块名称(Built-ins → builtins)**
    • 编程化改造
      • 去掉连字符(编程中变量名通常不用连字符) → builtins
      • 全小写(Python 模块命名惯例)。
    • Python 的正式命名
      • Python 3 中模块名称为 builtins(Python 2 是 __builtin__)。
      • 该模块是所有内置功能的容器,像一个隐藏的仓库。


拟人化总结


  • 想象 builtins 的诞生过程:

    1️⃣ 最初它是一个动词(build in),描述「将功能嵌入语言」。
    2️⃣ 后来它变成了形容词(built-in),表示「已经嵌入的功能」。
    3️⃣ 随着功能越来越多,它变成了复数(built-ins),代表「一群内置工具」。
    4️⃣ 最后为了适应代码世界的规则,它脱下连字符的外衣,变成模块名 builtins,成为 Python 的内置工具库管理员


彩蛋:Python 2 vs Python 3**


  • Python 2:模块名为 __builtin__(单数,强调「单个内置空间」)。
  • Python 3:更名为 builtins(复数,更符合实际——内置功能是多个的集合)。

  这种命名变化也体现了 Python 设计理念的演进:从「隐含的魔法」到「明确的表达」。🎩✨



2025  2025  2025


附:“沙箱环境”代码解读


以下是代码的逐层解析:


# 创建安全的 builtins 副本(排除危险函数)
safe_builtins = {k: v for k, v in __builtins__.__dict__.items() if k not in ('__import__', 'open')}# 测试安全执行
exec("print('安全操作')", {'__builtins__': safe_builtins})  # ✅ 允许
exec("open('test.txt')", {'__builtins__': safe_builtins})  # 🚫 触发NameError

代码解析层级


  • 第 1 层:安全沙箱原理
    通过限制代码执行环境的内置功能,防止危险操作(如文件读写、模块导入)。

  • 第 2 层:关键组件
组件作用
__builtins__Python 内置模块的引用(在模块中指向 builtins 模块的字典形式)
exec()动态执行字符串代码,可自定义全局命名空间
自定义命名空间通过字典传递 {'__builtins__': safe_builtins} 限制可访问的内置函数

  • 第 3 层:代码执行流程
  1. 过滤内置函数
    
    # 原始内置函数字典 → 过滤后的安全字典
    __builtins__.__dict__ → {'abs': <func>, ..., 'print': <func>}  # 移除 __import__ 和 open

  1. 执行安全代码
    
    exec("print(...)", {'__builtins__': safe_builtins})
    # 解释器查找 print 的顺序:
    # 1. 当前代码的局部作用域 → 无
    # 2. 自定义全局作用域的 __builtins__ → 找到 print

  1. 拦截危险操作
    
    exec("open(...)", {'__builtins__': safe_builtins})
    # 解释器查找 open 的顺序:
    # 1. 当前代码的局部作用域 → 无
    # 2. 自定义全局作用域的 __builtins__ → 无 open → 触发 NameError

  • 第 4 层:技术细节

    • __builtins__ 的双重身份
      • 在模块层级:指向 builtins 模块的字典形式(builtins.__dict__
      • 在函数/类内部:是 builtins 模块的引用(需通过 __builtins__.__dict__ 访问字典)
    • exec 的命名空间机制
      
      exec(code, globals_dict, locals_dict)
    • globals_dict 包含 __builtins__ 键,则使用该值作为内置模块
    • 若未显式指定,默认继承当前环境的 __builtins__
    • 安全风险扩展
      尽管移除了 open__import__,仍存在潜在风险:
      # 仍可通过其他方式突破限制:exec("os = (lambda: [].__class__.__base__.__subclasses__()[132]())()", safe_env)exec("os.system('rm -rf /')", safe_env)  # 通过回溯基类获取 os 模块

    提示:要实现真正的安全沙箱,建议使用专用库(如 PySandboxRestrictedPython)。



  • 代码可视化

过滤
访问 print
访问 open
原始 builtins
安全 builtins
执行代码
允许操作
触发 NameError

  通过这种机制,可以实现基础级别的代码安全隔离。



2025  2025  2025


上一篇:
Python的字符串优雅优化策略:特定编码 -> Unicode码点 -> UTF-8(可自定义)(Python利用唯一uni-pot中介打理,任意制式输出(首选uyf-8))



我的HOT博:


  本次共计收集449篇博文笔记信息,总阅读量70.99w。数据采集于2025年03月17日 00:27:47,用时10分46.1秒。阅读量不小于6.00k的有 10 10 10篇。


  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:63,055
    点赞:25 收藏:90 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:14,196
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:10,461
    点赞:3 收藏:21 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  4. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:10,358
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  5. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8,535
    点赞:5 收藏:27 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  6. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8,393
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8,190
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6,921
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6,282
    点赞:1 收藏:10 
  10. 我的 Python.color() (Python 色彩打印控制)
    地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    浏览阅读:6,192
    点赞:2 收藏:9 
    (本篇笔记于2022-02-28 22:46:21首次发布,最后修改于2022-03-03 10:30:03)


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新 发笔记被误杀而落马。躺“未过审”还不如回收站 ,回收站还不如永久不见。😪值此年底清扫,果 断移除。留此截图,以识“曾经”。2023-12-31)



2 0 2 5  2 0 2 5  2 0 2 5


老齐漫画头像

精品文章:

  • 好 文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永 久分享,点击跳转 免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置 对象理解python
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法
来源: 老齐教室

◆ Python 入门指南 【Python 3.6.3】

好文力 荐:

  • 全栈领域优质创作者——[寒 佬]博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函 数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代 码编写规范
  • Python的docstring规范(说明文档的规范写法)


http://www.mrgr.cn/news/95089.html

相关文章:

  • 春天遇到了冬天的吻
  • 【Java】Mybatis学习笔记
  • 火星探测发展概述2025.3.20
  • 如何判断 MSF 的 Payload 是 Staged 还是 Stageless(含 Meterpreter 与普通 Shell 对比)
  • scrollIntoView 的behavior都有哪些属性
  • STM32HAL库,解决串口UART中断接收到的第一个字节数据丢失
  • 基于springboot的房屋租赁系统(008)
  • L2TP实验 作业
  • 数学之握手问题
  • 基于单片机控制的电动汽车双闭环调速系统(论文+源码)
  • 微前端 qiankun vite vue3
  • Day20:丑数
  • 爬虫案例-爬取某狗音乐
  • 神经网络中层与层之间的关联
  • C++ 各种map对比
  • C语言的内存函数
  • 动平衡仿真程序设计
  • 【链表】一文搞定链表算法:从基础到实战
  • 【PCB工艺】电流、电压与电阻的关系 以及 含有电容和电感的电路
  • JavaScript 金额运算精度丢失问题及解决方案