Python内置函数速查表:68个Built-in Functions参数与用法汇总
全面汇总Python 3标准库全部68个内置函数(Built-in Functions),详细梳理参数规格、返回值、核心功能与代码示例,配套作用域解析、分类全景与选型决策图。
一、Python内置作用域与LEGB查找机制
当我们在Python代码中直接调用一个函数(如len([1, 2, 3])或abs(-5))而无需显式执行import时,Python解释器依靠LEGB规则解析变量标识符。内置命名空间(Built-in Scope)作为标识符解析的最后一道防线,由builtins模块承载。
在模块运行期间,解释器会在全局字典中注入__builtins__对象。如果在局部作用域、闭包外层作用域、当前模块全局作用域中均未找到对应的名字,解释器便会在内置作用域中检索。如果我们在代码中不慎将自定义变量命名为str = "hello"或list = [1, 2],就会产生“变量遮蔽(Shadowing)”,导致后续正常的list()类型转换调用抛出TypeError异常。
二、68个内置函数功能分类全景架构
Python 官方维护的 68 个内置函数并非随意罗列,而是按照软件开发的基础需求,严谨划分为 6 大核心功能体系。掌握这 6 大模块的分类逻辑,可以帮助开发者在编写逻辑时迅速定位最贴合的底层原生函数,避免重复造轮子。
三、68个内置函数完整参数与用法速查表
1. 数学与数值运算类(8个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| abs(x) | x:数值或实现 __abs__() 的对象 |
数值(正数/零) | 返回绝对值;复数返回模长。abs(-7.5) -> 7.5;abs(3+4j) -> 5.0 |
| divmod(a, b) | a, b:非复数数值 |
tuple (商, 余数) |
同时计算整除与求模,等价于 (a // b, a % b)。divmod(14, 3) -> (4, 2) |
| max(arg1, arg2, *args, [key, default]) | 可迭代对象或多个参数;key 为排序函数,default 为空容器缺省值 |
元素类型 | 返回最大值。max([1, 9, 3]) -> 9;max([], default=0) -> 0 |
| min(arg1, arg2, *args, [key, default]) | 同 max |
元素类型 | 返回最小值。min(['apple', 'go'], key=len) -> 'go' |
| pow(base, exp, [mod]) | base 底数,exp 指数,可选 mod 取模 |
数值 | 高效幂运算。提供模数时执行三元幂模 (base ** exp) % mod,性能优于直接求模。 |
| round(number, [ndigits]) | number 浮点数/整数;ndigits 保留小数位数 |
int 或 float | 按“四舍六入五成双”(银行家舍入法)进行精度舍入。round(2.5) -> 2, round(3.5) -> 4 |
| sum(iterable, /, start=0) | iterable 数值序列;start 起始累加值 |
数值 | 自左向右对项求和。不可用于拼接字符串序列(应使用 ''.join())。 |
| complex([real, [imag]]) | real 实部,imag 虚部(支持字符串解析) |
complex | 构造复数。complex(2, 3) -> (2+3j);complex('1+2j') 字符串中间不能含空格。 |
2. 类型转换与基础数据构造(14个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| bool([x]) | x:待求真值的任意表达式 |
bool | 转换为布尔值 True 或 False。零、空容器、None 均转为 False。 |
| int(x=0, [base]) | x 数字或字符串;base 进制(2~36) |
int | 截断浮点取整或按进制解析。int('1010', 2) -> 10;int('ff', 16) -> 255 |
| float([x]) | x 数字或字符串 |
float | 转为双精度浮点数。支持特殊字面量:float('inf'), float('nan')。 |
| str(object='') | object 对象,encoding, errors 用于字节转码 |
str | 返回对象的友好文本形式;或将 bytes 解码为字符串。 |
| list([iterable]) | iterable 可迭代对象 |
list | 创建可变列表。若不给参数则创建空列表 []。 |
| tuple([iterable]) | iterable 可迭代对象 |
tuple | 创建不可变元组。常用于固化可迭代序列保证数据防篡改。 |
| set([iterable]) | iterable 元素必须为可哈希对象 |
set | 创建无序不重复元素集。常用作数据去重与集合交并差运算。 |
| frozenset([iterable]) | iterable 元素需可哈希 |
frozenset | 创建不可变集合。由于自身不可变且可哈希,可用作字典的键或嵌套于集合中。 |
| dict(**kwargs) | 映射对象、键值对序列或关键字实参 | dict | 构造哈希表字典。dict(a=1, b=2) 或 dict([('x', 10), ('y', 20)])。 |
| bytes([source, [encoding, errors]]) | 整数、字符串(需传编码)或字节序列 | bytes | 构造不可变字节序列。bytes('中文', 'utf-8') -> b'\xe4\xb8\xad\xe6\x96\x87' |
| bytearray([source]) | 参数规格与 bytes 一致 |
bytearray | 构造可变二进制字节数组,支持就地切片赋值与 append 等修改操作。 |
| memoryview(obj) | 支持缓冲区协议(Buffer Protocol)的对象 | memoryview | 创建内存视图,允许在不进行内存拷贝(Zero-copy)的情况下切片和访问原始字节缓冲区。 |
| slice(stop) / slice(start, stop, [step]) | 起始索引、终止边界、步长 | slice | 创建切片对象。等价于扩展索引语法 obj[start:stop:step],便于复用切片规则。 |
| object() | 无参数 | object | 返回所有类的最终基类新实例。由于不具备 __dict__,常作为全局唯一哨兵标识(Sentinel)。 |
3. 序列、迭代与流操作(14个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| len(s) | s 序列或映射 |
int | 获取容器元素数量,底层直接调用对象的 __len__(),时间复杂度通常为 O(1)。 |
| range(stop) / (start, stop, [step]) | 整型起始点、终止界限、步长 | range 对象 | 生成惰性不可变整数序列。内存消耗恒定,不会一次性在内存中展开列表。 |
| enumerate(iterable, start=0) | iterable 序列;start 起始索引计数值 |
enumerate 迭代器 | 在遍历时同时生成 (index, item) 元组,避免使用 i = 0; i += 1 计数。 |
| zip(*iterables, strict=False) | 一个或多个可迭代对象;strict 为 Python 3.10+ 新增 |
zip 迭代器 | 并行打包元组。开启 strict=True 时,若各输入长度不一致将抛出 ValueError。 |
| map(function, iterable, ...) | 处理函数与一个或多个序列 | map 迭代器 | 对序列中每个元素惰性应用函数变换。list(map(int, ['1', '2'])) -> [1, 2] |
| filter(function, iterable) | 判断函数(可为 None)与序列 | filter 迭代器 | 筛选出使 function(item) 返回真值的元素。函数传 None 时过滤虚值。 |
| sorted(iterable, /, *, key=None, reverse=False) | 待排序容器;key 排序字段;reverse 降序 |
list | 返回全新的已排序列表(保证稳定排序),原容器数据结构保持不变。 |
| reversed(seq) | 实现 __reversed__() 或具有长度和序列协议的对象 |
reversed 迭代器 | 反向迭代序列元素,惰性求值不占用重复内存。 |
| all(iterable) | iterable 待判断序列 |
bool | 若所有元素求真结果均为 True 则返回 True;对空集合直接返回 True(Vacuous Truth)。 |
| any(iterable) | iterable 待判断序列 |
bool | 只要存在任意一个真值元素即短路返回 True;若容器为空返回 False。 |
| iter(object, [sentinel]) | 对象,或支持可调用的哨兵模式 | 迭代器 | 获取迭代器。双参数形态 iter(callable, sentinel) 会循环调用直到返回值等于哨兵值退出。 |
| next(iterator, [default]) | 迭代器;可选 default 缺省值 |
元素类型 | 驱动迭代器取出下一项。迭代耗尽时若无 default 则抛出 StopIteration。 |
| aiter(async_iterable) | 异步可迭代对象(实现 __aiter__) |
异步迭代器 | Python 3.10+ 新增。获取异步迭代器,等价于调用 x.__aiter__()。 |
| anext(async_iterator, [default]) | 异步迭代器与可选缺省值 | Awaitable 对象 | Python 3.10+ 新增。await anext(ait),取出异步迭代下一项,耗尽触发 StopAsyncIteration。 |
4. 对象属性与反射内省(12个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| type(object) / (name, bases, dict) | 单参数传对象;三参数传类名、基类元组、命名空间 | type / 新类 | 单参数获取对象类型;三参数在运行时动态创建类。MyClass = type('MyClass', (), {}) |
| id(object) | 任意 Python 实体 | int | 返回对象生命周期内唯一的整数内存标识(CPython 实现中即为对象底层内存指针地址)。 |
| hash(object) | 需为不可变且实现 __hash__() 的对象 |
int | 返回哈希值。字典与集合利用此值进行哈希桶索引。不可变对象才具备哈希值。 |
| callable(object) | 任意对象 | bool | 检查对象是否可以被调用(如函数、类,或实现了 __call__() 方法的类实例)。 |
| isinstance(object, classinfo) | object 实例;classinfo 类或类元组 |
bool | 判断对象是否属于该类或其子类实例。支持联合类型如 isinstance(x, (int, float))。 |
| issubclass(class, classinfo) | class 目标类;classinfo 父类或元组 |
bool | 判断一个类是否是另一个类(或元组中任一类)的直接或间接衍生子类。 |
| hasattr(object, name) | object 对象;name 字符串属性名 |
bool | 检查对象是否具备指定属性。底层通过调用 getattr 捕获 AttributeError 实现。 |
| getattr(object, name, [default]) | 对象、属性字符串、未找到时的缺省回退值 | 属性值 | 动态反射获取对象属性。未找到且无 default 时抛出 AttributeError。 |
| setattr(object, name, value) | 对象、属性名称字符串、赋值内容 | None | 动态为对象添加或重写属性值,等价于 object.name = value。 |
| delattr(object, name) | 对象、属性名称字符串 | None | 动态删除对象的指定属性,等价于 del object.name。 |
| dir([object]) | 可选对象 | list[str] | 无参时返回当前局部作用域名称列表;传参时返回该对象所有有效属性及方法名称。 |
| vars([object]) | 模块、类、实例等具有 __dict__ 的对象 |
dict | 无参返回 locals() 字典;传参返回该对象的属性字典 object.__dict__。 |
5. 输入输出、类修饰与环境作用域(10个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| open(file, mode='r', buffering=-1, encoding=None, ...) | 文件路径、读写模式(r/w/a/b)、字符编码等 | 文件流 IO 对象 | 打开文件并返回对应流对象。文本读写建议显式指定 encoding='utf-8',搭配 with 使用。 |
| print(*objects, sep=' ', end='\n', file=None, flush=False) | 输出项、分隔符、结尾字符、目标流、刷新缓冲 | None | 格式化输出至标准输出流(sys.stdout)。传 flush=True 强制即时刷新底层缓冲。 |
| input([prompt]) | 终端交互输入提示文本 | str | 暂停程序并阻塞等待终端读取一行文本,自动剥离末尾换行符。 |
| format(value, [format_spec]) | 待格式化数值或对象;规范指示符 | str | 按规范格式化。format(1234.567, ',.2f') -> '1,234.57';format(255, '08b') -> '11111111' |
| globals() | 无参数 | dict | 返回代表当前模块全局符号表的真实字典,修改该字典内容会直接影响全局变量。 |
| locals() | 无参数 | dict | 更新并返回当前局部符号表字典。在函数内修改 locals() 并不保证能同步更改局部变量。 |
| super([type, [object-or-type]]) | 当前类型定义与目标实例 | 代理对象 | 按方法解析顺序(MRO)动态委派父类方法调用。单继承中常见形式为 super().__init__()。 |
| property(fget=None, fset=None, fdel=None, doc=None) | Getter、Setter、Deleter 函数及文档 | property 属性 | 构造属性描述符。最常用作 @property 装饰器,使方法可以像常规属性一样被访问与设值。 |
| classmethod(function) | 方法函数 | 类方法对象 | 装饰器。将方法转换为类方法,隐式接收当前类本身作为第一个形参 cls。 |
| staticmethod(function) | 方法函数 | 静态方法对象 | 装饰器。将方法转换为静态方法,不隐式接收实例 self 或类 cls 参数。 |
6. 编码、动态执行与调试帮助(10个)
| 函数签名 | 主要参数说明 | 返回值类型 | 核心功能与实用示例 |
|---|---|---|---|
| repr(object) | 任意对象 | str | 返回面向开发者的规范字符串表达式,通常要求 eval(repr(obj)) == obj。 |
| ascii(object) | 任意对象 | str | 类似于 repr(),但会将所有非 ASCII 字符转义为 \x、\u 或 \U 字符序列。 |
| ord(c) | 单字符 Unicode 字符串 | int | 返回对应字符的 Unicode 码点整数。ord('A') -> 65;ord('中') -> 20013 |
| chr(i) | Unicode 整数码点(0 ~ 1,114,111) | str | 返回整数码点对应的单个字符,与 ord() 互为逆运算。chr(65) -> 'A' |
| bin(x) | 整数 | str | 转换为带 0b 前缀的二进制字符串。bin(10) -> '0b1010' |
| hex(x) | 整数 | str | 转换为带 0x 前缀的小写十六进制字符串。hex(255) -> '0xff' |
| oct(x) | 整数 | str | 转换为带 0o 前缀的八进制字符串。oct(8) -> '0o10' |
| compile(source, filename, mode, ...) | 源代码字符串/AST、虚拟文件名、模式(exec/eval/single) | 代码对象 code object | 将代码编译为 Python 字节码,可被 exec() 或 eval() 高性能重复执行。 |
| eval(expression, [globals, locals]) | 单一表达式字符串、命名空间字典 | 表达式求值结果 | 动态计算单一 Python 表达式并返回结果。严禁用于执行未经审计的外部用户输入。 |
| exec(object, [globals, locals]) | 多行代码字符串或编译代码对象 | None | 动态执行大段 Python 复合语句(含循环、函数、类定义)。 |
| breakpoint(*args, **kws) | 任意转发给调试器的参数 | None | Python 3.7+ 引入的内建断点触发函数,默认调用 sys.breakpointhook() 呼起 PDB。 |
| help([object]) | 模块、函数、类、方法或无参 | None | 呼起内置交互式帮助系统,或在控制台格式化打印指定对象的 docstring 帮助文档。 |
四、日常编码中的内置函数选型决策步骤
在面对具体业务需求时,选择最贴合的内置函数不仅能精简代码量,还能利用底层的 C 实现提升运行速度。下图展示了在面对常见数据流处理、状态校验和类型判断时的判定决策路径。
五、常见高频避坑要点与典型错误分析
1. 命名覆盖遮蔽内置函数(Shadowing Builtins)
初学者在定义变量名时,极易使用 list、dict、str、type 等作为普通变量名。例如:
# 错误示范:覆盖了内置的 list 构造函数
list = [10, 20, 30]
# 后续代码如果需要将元组转成列表:
new_data = list((40, 50)) # 抛出 TypeError: 'list' object is not callable
规避方法:若变量必须使用类型含义,可采用 item_list、user_dict 或 PEP 8 推荐的末尾单下划线 list_ 命名风格。若意外覆盖,可通过 del list 从全局符号表中将其移除以恢复内置函数访问。
2. round() 的“四舍六入五成双”机制
Python 3 中的 round() 函数采用 IEEE 754 标准推荐的偶数舍入算法(Round half to even),并非数学初学者所熟知的传统“四舍五入”。
print(round(2.5)) # 输出 2 (靠近更近的偶数 2)
print(round(3.5)) # 输出 4 (靠近更近的偶数 4)
print(round(1.5)) # 输出 2
注意事项:在金融结算、计费对账等对舍入精度有严格规定的场景下,应使用标准库 decimal.Decimal 配合明确的 ROUND_HALF_UP 上舍入模式,避免直接使用 round() 引发微小的系统累积偏差。
3. all() 与 any() 对空可迭代对象的真值陷阱
对空列表、空元组调用 all() 和 any() 时,其结果在逻辑学上符合“空虚真(Vacuous Truth)”定义,但在业务逻辑中经常造成隐形判定错误:
# 场景:检查所有用户权限是否均已通过
permissions = []
print(all(permissions)) # 输出 True!因为“不存在一个不满足条件的项”
print(any(permissions)) # 输出 False!因为“没有任一项满足条件”
防范措施:在对条件集合执行 all() 前,若业务要求“必须存在至少一个有效记录且全部满足”,应当显式增加非空前置校验:bool(permissions) and all(permissions)。
4. 惰性求值(Lazy Evaluation)的单次消耗特性
map()、filter()、zip() 和 reversed() 在 Python 3 中均返回惰性迭代器(Iterator),而非具体的列表。
numbers = [1, 2, 3, 4]
res = map(lambda x: x * 2, numbers)
print(list(res)) # 输出 [2, 4, 6, 8]
print(list(res)) # 输出 [] !迭代器已被耗尽,再次读取直接返回空
设计建议:如果后续逻辑需要多次循环消费处理结果,必须在生成后使用 list() 或 tuple() 显式固化;若数据规模达百万级且仅需线性流式处理一遍,则直接传递迭代器以节省内存占用。
六、Python内置函数核心体系总结与速查脑图
通过系统性掌握 Python 这 68 个底层内置工具,编写代码时能够更深入地契合 Pythonic 思想。下图针对常用核心函数、执行流关系及设计哲学进行了总体归纳。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









