Python内置函数大全:68个built-in函数速查与分类

月亮慢半拍
月亮慢半拍
发布时间:2026-11-11 | 3人浏览过
原创

全面梳理Python官方标准命名空间中的全部68个built-in内置函数。按照数学计算、类型转换、容器结构、迭代处理、反射内省等十大核心维度系统分类,提供参数说明、对比解析、使用规范与避坑建议。

Python内置函数大全:68个built-in函数速查与分类
Python 标准库中最常用且基础的组件,就是无需任何 import 声明即可直接调用的内置函数(Built-in Functions)。在 Python 官方规范的标准全局命名空间中,完整维护着 68 个核心内置函数。它们直接由底层的 builtins 模块导出,支撑了从最基础的数值运算、集合操作,到高阶迭代、类属性反射与运行时动态代码执行的全套语言特性。本文将这 68 个内置函数按实际工程职责划分为 10 大核心类别,逐一提供签名功能说明、典型实战范例与高频边界避坑指导。

一、68个内置函数十大分类矩阵总览

为了让查询与记忆更具条理性,本文摒弃按照首字母顺序罗列的机械方式,而是根据它们在 Python 开发任务中的底层角色,将 68 个函数解构成 10 个功能明确的模块。

Python内置函数大全:68个built-in函数速查与分类
图 1:Python 68 个内置函数十大功能分类全景架构矩阵

每一个分类都对应着 Python 语言机制的一个专门侧面:

  • 数学与数值计算(7个):处理算术取值、除法余数、极值定位与精度四舍六入。
  • 数据类型与构造转换(13个):负责标量类型构建、进制转换与字节缓冲区内存视图。
  • 数据结构与容器操作(13个):包含列表、元组、字典、集合构造及序列切片、重组与格式化。
  • 迭代器与高阶流处理(6个):提供惰性流式计算、全称/存在性条件判断及哨兵迭代。
  • 作用域与命名空间内省(4个):用于动态排查局部、全局及对象内部符号表。
  • 面向对象与反射机制(8个):实现类与实例类型判定、动态增删改查属性与元类基类定义。
  • 类方法与属性装饰器(4个):提供描述符封装、类方法绑定与多继承 MRO 链式委托。
  • 输入输出与交互控制(4个):标准输入输出管道、操作系统物理文件操作及文档帮助检索。
  • 动态编译与代码执行(4个):将字符串源码动态编译为 AST 字节码并按需在指定沙箱执行。
  • 运行时底层与对象标识(5个):获取对象内存物理唯一地址、哈希值计算及对象调用契约检验。

二、数学与数值计算函数(7个)

这 7 个函数用于处理基本数值逻辑。与 math 模块相比,内置数学函数覆盖的是所有数值类型通用的基础算术操作。

函数签名 返回值与功能简述 典型调用示例
abs(x) 返回数值的绝对值;若为复数则返回其模长 abs(-15.6) → 15.6
divmod(a, b) 同时返回商和余数的二元组 (a // b, a % b) divmod(100, 30) → (3, 10)
max(arg1, arg2, *args, [key]) 返回可迭代对象或多个参数中的最大值,支持自定义 key 函数 max([-2, 5, -8], key=abs) → -8
min(arg1, arg2, *args, [key]) 返回可迭代对象或多个参数中的最小值,支持自定义 key 函数 min(["apple", "fig"], key=len) → "fig"
pow(base, exp, [mod]) 计算 base ** exp;若提供第三个参数,执行高效模幂运算 (base ** exp) % mod pow(3, 3, 5) → 2
round(number, [ndigits]) 执行数值舍入。遵循“四舍六入五成双”(向最接近的偶数舍入)原则 round(2.5) → 2;round(3.5) → 4
sum(iterable, [start]) 从 start(默认0)开始,将可迭代对象中的元素依次累加 sum([1, 2, 3], 10) → 16
核心细节解析:divmod() 与 round() 的实战要点

1. 翻页与时间计算:divmod() 相比单独写一次 // 和一次 %,只在底层执行一次除法指令,效率更高。常用于秒数拆分为分秒:mins, secs = divmod(total_seconds, 60)。

2. 舍入陷阱:round() 并非学校数学中传统的绝对“四舍五入”,而是 IEEE 754 推荐的银行家舍入法。例如 round(0.5) 为 0,round(1.5) 为 2。如果在财务系统需要严格进位,应使用 decimal 模块。

三、数据类型与构造转换函数(13个)

Python 中每个基本类型名称本质上都是其内置类的构造方法,负责将其他对象安全转换为目标格式。

函数签名 目标数据类型与核心功能 典型调用示例
bool([x]) 将对象转换为布尔值,依据标准的真值测试判定 bool([]) → False
int(x, [base=10]) 将数值或字符串转换为整数,支持指定 2~36 进制 int("1010", base=2) → 10
float(x) 将字符串或整数转为双精度浮点数,支持科学计数法与 "inf" float("1e-3") → 0.001
complex(real, [imag]) 构造形如 real + imag*j 的复数对象 complex(3, -4) → (3-4j)
str(object='') 返回面向用户的可读字符串形式 str(123) → "123"
bytes([source]) 构造不可变字节序列,范围 0~255 bytes("你好", "utf-8")
bytearray([source]) 构造可变字节数组,支持原地切片与修改赋值 ba = bytearray(b"abc"); ba[0] = 65
memoryview(obj) 创建支持缓冲区协议对象的零拷贝(Zero-copy)内存切片视图 mv = memoryview(b"data")[1:3]
ord(c) 输入单字符,返回对应的 Unicode 码点整数值 ord('A') → 65;ord('中') → 20013
chr(i) 输入整数码点(0~0x10FFFF),返回对应的 Unicode 字符 chr(65) → 'A';chr(20013) → '中'
bin(x) 将整数转换为以 0b 为前缀的二进制字符串 bin(10) → '0b1010'
oct(x) 将整数转换为以 0o 为前缀的八进制字符串 oct(64) → '0o100'
hex(x) 将整数转换为以 0x 为前缀的十六进制小写字符串 hex(255) → '0xff'

四、数据结构与容器操作函数(13个)

Python 高效操作的关键在于对基础集合容器的娴熟运用。以下 13 个内置函数覆盖了容器的声明、排序、切片和打包:

函数名称 主要功能 特性说明与代码范例
list([iterable]) 构造可变列表 list((1, 2, 3)) → [1, 2, 3]
tuple([iterable]) 构造不可变元组 tuple([1, 2]) → (1, 2)
dict(**kwarg) 构造键值对映射表 dict(a=1, b=2) → {{'a': 1, 'b': 2}}
set([iterable]) 构造可变无序去重集合 set([1, 2, 2, 3]) → {{1, 2, 3}}
frozenset([iterable]) 构造不可变集合,哈希安全,可作为字典键 frozenset([1, 2])
len(s) 返回容器元素个数,内部快速读取 ob_size 字段 len([10, 20, 30]) → 3
range(stop) 生成不可变等差数列,占用恒定 O(1) 内存 range(0, 10, 2) → 0, 2, 4, 6, 8
enumerate(iterable, start=0) 将序列包装为包含计数索引和原值的元组迭代器 list(enumerate(['a', 'b'], 1)) → [(1, 'a'), (2, 'b')]
zip(*iterables, strict=False) 并行配对聚合多个迭代器元素为元组 list(zip([1, 2], ['x', 'y'])) → [(1, 'x'), (2, 'y')]
reversed(seq) 返回序列的反向反转迭代器,无需拷贝原列表 list(reversed([1, 2, 3])) → [3, 2, 1]
sorted(iterable, *, key=None, reverse=False) 返回由原序列元素组成的新升序/降序列表(Timsort 算法) sorted([3, 1, 2]) → [1, 2, 3]
slice(start, stop, step) 生成切片对象,可在自定义类或对复杂数组重复应用 s = slice(1, 4, 2); [0, 1, 2, 3, 4][s] → [1, 3]
format(value, [format_spec]) 依据格式化规范转换字符串,底层委派给 __format__ format(1234.567, ",.2f") → "1,234.57"

五、迭代器与高阶流处理函数(6个)

Python 支持函数式编程的核心内置工具就是这一组高阶函数。它们以惰性求值为核心,在处理千万级数据集时不会发生内存暴涨。

Python内置函数大全:68个built-in函数速查与分类
图 2:内置函数数据流处理与高阶迭代调用管线(步骤流)

标准处理管线通常分为四个步骤:

  1. 数据源输入:通过 range()、文件读取句柄 open() 或集合类获取基础数据流。
  2. 转换与匹配:使用 map() 进行逐项运算变换,使用 filter() 剔除不合规元素,使用 zip() 与 enumerate() 进行组合对齐。
  3. 状态迭代消费:通过 iter() 获取迭代器,使用 next() 在循环中单步推进并设置默认兜底值。
  4. 终端聚合:使用 sorted() 输出结构化结果,或利用 all()、any()、sum() 进行逻辑决断和标量计算。
函数签名 运作模式 关键边界与注意事项
all(iterable) 若所有元素皆为真则返回 True,遇到首个 False 立即短路 空真规则:all([]) 返回 True(空集合中不存在任何假元素)
any(iterable) 只要存在任意一个元素为真则返回 True,遇到首个 True 短路 any([]) 返回 False;支持任意迭代器
filter(function, iterable) 过滤序列,仅保留满足 function(item) == True 的元素迭代器 若 function 传入 None,则自动移除所有假值元素
map(function, *iterables) 将函数依次作用于可迭代对象的每项元素,返回惰性迭代器 传入多个序列时,以最短序列的终点为结束条件
iter(object, [sentinel]) 返回对象的迭代器。若传入 sentinel,则持续调用 object() 直至返回值等于哨兵 读取文件块典型范式:iter(lambda: f.read(1024), b'')
next(iterator, [default]) 调用迭代器的 __next__() 方法取出下一项 当迭代耗尽时,若未提供 default 则抛出 StopIteration,提供则安全返回该值

实战高阶流处理代码示例:

# 环境:Python 3.8+ 任意环境
numbers = [12, -7, 0, 15, 8, -3, 22]

# 组合管线:过滤负数 -> 平方变换 -> 降序排序
pipeline = sorted(map(lambda x: x ** 2, filter(lambda x: x > 0, numbers)), reverse=True)
print("处理后的平方降序序列:", pipeline)

# 安全迭代推进示例
iterator = iter(["Task-A", "Task-B"])
print("Step 1:", next(iterator, "已无任务"))
print("Step 2:", next(iterator, "已无任务"))
print("Step 3 (安全越界):", next(iterator, "已无任务"))
示例运行输出
处理后的平方降序序列: [484, 225, 144, 64] Step 1: Task-A Step 2: Task-B Step 3 (安全越界): 已无任务

六、作用域与命名空间内省函数(4个)

Python 程序在执行时,所有变量名均存储在对应的符号表字典中。以下 4 个函数允许开发者在运行时内省命名空间:

  • dir([object]):若不带参数,返回当前局部作用域内的全部变量名列表;若带参数,返回该对象的所有有效属性和方法名(包含特殊双下划线方法)。
  • globals():返回当前全局命名空间的真实字典引用。修改该字典内的键值会直接更改全局变量。
  • locals():返回当前局部命名空间的字典。在函数内部,Python 字节码优化了局部变量存储(FAST 局部数组),因此 locals() 仅返回一份快照字典,修改该字典不会影响实际的局部变量。
  • vars([object]):返回对象的 __dict__ 属性。若不带参数,等同于 locals()。如果目标对象未定义 __dict__(如使用了 __slots__ 的类),调用将抛出 TypeError。

七、面向对象与属性反射函数(8个)

反射(Reflection)是指程序在运行状态中,能够探知任意一个对象的内部属性和方法,并且能够动态调用与修改。

函数签名 功能定义 防错与安全调用规范
getattr(object, name, [default]) 获取对象属性值。若属性不存在且有 default 则返回默认值 务必提供第三参数 default,避免抛出 AttributeError
hasattr(object, name) 判断对象是否包含指定名称的属性或方法 底层通过尝试 getattr 并捕获异常实现,频繁调用有微小开销
setattr(object, name, value) 动态为对象添加或重设指定属性值 等价于 object.name = value,适用于配置项批量灌入
delattr(object, name) 删除对象的指定属性,等价于 del object.name 若属性不存在将抛出 AttributeError
isinstance(object, classinfo) 检查对象是否为指定类或元组中任一类的实例(考虑继承链) 推荐的多态检查手段,子类实例会被认定属于父类
issubclass(class, classinfo) 检查第一个类是否是第二个类(或元组中类)的直接/间接子类 两个参数必须都是类对象,否则抛出 TypeError
type(object) / type(name, bases, dict) 单参数时返回对象精确类型;三参数时为元类工厂,动态创建新类 精准单类型判断,不考虑继承链;支持动态创建类
object() 返回所有 Python 类的最底层基类无状态新实例 常作为单例哨兵对象,占用内存最小且唯一不可伪造
Python内置函数大全:68个built-in函数速查与分类
图 3:高频混淆内置函数底层机制对比(isinstance vs type 与 str vs repr)
机制比对剖析:isinstance() 与 type() 的根本区别

从底层实现来看,type(obj) is Cls 仅核验对象指针直接指向的类型描述符;而 isinstance(obj, Cls) 会遍历实例所属类的整个 __mro__(方法解析顺序元组)。

在 Python 中,bool 是 int 的直接子类。因此 isinstance(True, int) 为 True,但 type(True) is int 为 False。在编写业务代码时,绝大多数情况下应该使用 isinstance() 保证面向对象多态兼容性。

八、类方法与属性装饰器函数(4个)

虽然在现代 Python 中开发者习惯以 @property 的语法糖形式使用,但它们在语言底层均为纯正的 built-in 函数。

  • property(fget=None, fset=None, fdel=None, doc=None): 构建托管属性描述符。通过拦截属性读取、赋值和删除行为,在不改变原有属性访问语法的外部前提下,于内部嵌入数据校验、懒加载或只读保护逻辑。
  • classmethod(function): 将普通函数转换为类方法。被修饰的方法在调用时,第一个隐式参数不再是实例 self,而是所属类对象 cls。常用于编写自定义工厂方法。
  • staticmethod(function): 将普通函数转换为静态方法。静态方法不再隐式接收任何 self 或 cls 参数,本质上是挂载在类命名空间内的独立通用工具函数。
  • super([type, [object-or-type]]): 返回代理对象,用于委托调用父类或兄弟类的方法。在多重继承体系中,super() 会严格遵循 C3 线性化算法生成的 MRO 顺序推进,防止菱形继承(Diamond Problem)导致的基类方法重复执行。

九、输入输出与交互控制函数(4个)

作为程序与外部环境打交道的门户,这 4 个函数支撑了终端交互与文件系统读写:

函数签名 主要功能 实用参数与生产最佳实践
print(*objects, sep=' ', end=' ', file=sys.stdout, flush=False) 将对象格式化后输出至指定流,默认输出到控制台 • sep:设置多参数间的分隔字符
• flush=True:在终端实时刷新进度条,避免标准I/O行缓冲阻塞
input([prompt]) 暂停程序,在控制台打印提示符并读取用户的一行输入,返回纯字符串 读取结果始终为 str 类型,数值需显式强转,如 int(input())
open(file, mode='r', buffering=-1, encoding=None...) 打开系统文件,返回对应的文件流迭代器 必须显式指定 encoding='utf-8',配合 with 上下文管理器确保句柄按时关闭
help([object]) 唤起内置交互式帮助系统,或直接输出指定对象、模块的 docstring 文档 调试与终端排查利器,如 help(dict.setdefault)

十、动态编译与代码执行函数(4个)

这组函数提供了直接操纵 Python 虚拟机编译器和运行时执行引擎的底层能力。由于它们具有极高的灵活性,在获得强大元编程能力的同时,也伴随着安全风险。

函数签名 执行机制 风险等级与防范策略
eval(expression, [globals], [locals]) 对单个 Python 表达式字符串求值并直接返回计算结果 高危:若传入包含恶意指令的字符串(如 __import__('os').system(...))将导致系统被接管。解析字面量必须改用 ast.literal_eval。
exec(object, [globals], [locals]) 动态执行任意多行 Python 代码块、语句与类/函数定义,固定返回 None 高危:务必严格传入受限的 globals 字典沙箱环境,隔离内置命名空间。
compile(source, filename, mode, flags=0, dont_inherit=False) 将源码字符串预编译为可供 exec() 或 eval() 执行的内部代码对象 适合循环体内重复执行的动态模板。预编译只需进行一次,能显著消除重复词法语法分析开销。
__import__(name, [globals], [locals], [fromlist], [level]) 由 import 语句底层直接调用的原始挂钩函数 普通工程中动态引入模块应使用官方推荐的标准库 importlib.import_module(),而非直接调用 __import__。
安全防范警告:eval() 的危险性与安全替代方案

永远不要对来自 Web 请求、用户提交表单或未经校验的配置文件执行 eval()。如果仅仅需要将字符串转换为列表、字典或数字,应使用标准库中的安全解析器:

import ast

# 安全解析字符串形式的配置容器
user_input = "{'host': '127.0.0.1', 'port': 8080}"
safe_config = ast.literal_eval(user_input)
print("安全解析成功:", safe_config["port"])

十一、运行时底层与对象标识函数(5个)

这 5 个函数与 CPython 底层对象模型密切相关,负责内存唯一性检验、哈希定位与准确文本表征:

函数签名 核心功能与底层机制 关键结论与使用准则
id(object) 返回对象的唯一内存标识整数(CPython 中即对象内存首地址) 在对象的整个生命周期中唯一且恒定;a is b 等价于 id(a) == id(b)
hash(object) 返回对象的整数哈希值,用于字典键与集合元素的哈希桶快速定位 仅不可变类型(数字、字符串、元组、frozenset)是可哈希的;列表与字典调用抛出 TypeError
callable(object) 检查对象是否可以被调用(是否包含 __call__ 槽位) 函数、方法、类对象及实现了 __call__ 的自定义类实例均返回 True
repr(object) 返回对象的官方规范字符串形式,尽可能满足 eval(repr(obj)) == obj 优先供开发者排错、日志记录和 REPL 输出使用,保留类型信息和引号细节
ascii(object) 类似于 repr(),但会自动将非 ASCII 字符转义为 \x、\u 或 \U 前缀 常用于向仅支持纯 ASCII 的遗留通信协议或日志系统安全输出文本

十二、综合总结与避坑速查全景路线

掌握全部 68 个内置函数并不意味着要在每一个场景强行使用它们。遵循良好的工程直觉,明确它们在开发生命周期中的频率分布与边界限制,才是提升代码可靠性与性能的关键。

Python内置函数大全:68个built-in函数速查与分类
图 4:68 个内置函数实用频率与避坑指南知识全景总结

在日常开发与代码重构中,请重点遵循以下四条核心实践法则:

  • 法则 1:优先使用原生内置函数代替手写循环。 像 sum()、any()、enumerate() 等函数均由底层 C 代码高度优化并支持短路机制,无论在执行速度还是代码简洁度上都优于手写 for 循环计数。
  • 法则 2:理解惰性迭代与立即求值的开销界限。 range()、map()、filter() 和 zip() 生成的是惰性迭代器,单次遍历时内存开销恒为 O(1)。若需要对结果进行多次索引访问、长度测量或重复遍历,才需要通过 list() 显式具象化。
  • 法则 3:面向对象设计牢记多态优先。 使用 isinstance() 进行参数类型断言,允许用户传入衍生子类;只在必须排他隔离的序列化与类型注册中心,才使用 type(obj) is cls。
  • 法则 4:安全底线坚决不让步。 涉及字符串代码求值时,坚决抵制 eval() 的随意调用,对配置字典字符串优先使用 ast.literal_eval(),确保业务系统远离注入安全漏洞。
相关专题:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表