Python 3内置函数完整列表与速查表
Python 3 内置函数完整列表与速查表,系统归纳 Python 3 全部 71 个内置函数的语法参数、返回值、核心机制与典型工程示例,附带底层架构、流式管道、反射拦截与选型决策树的高清内联图解。
Python 3 标准运行时共提供了 71 个内置函数(Built-in Functions)。这些函数无须通过 import 引入任何模块,即可在 Python 解释器的任何作用域中直接调用。它们全部注册在根命名空间的 builtins 模块中,由 CPython 底层 C 代码直接实现,拥有语言级别最高的执行效率与极低的调用开销。本文提供 Python 3 全部 71 个内置函数的完整分类速查表、参数签名、返回值说明、典型工程示例与避坑指南,并通过架构图、流式处理流水线、反射模型及决策树图解,帮助开发者在日常编码与重构中迅速完成最优技术选型。
一、Python 3 内置函数核心机制与作用域解析
理解内置函数的第一步是厘清 Python 的变量解析顺序。Python 解释器在查找任意未限定前缀的变量名或函数名时,始终严格遵循 LEGB 规则:
- L (Local):当前函数或方法内部的局部作用域;
- E (Enclosing):闭包函数外层的嵌套作用域(由内向外);
- G (Global):当前执行模块的顶级全局命名空间;
- B (Built-in):解释器启动时由
builtins模块预先挂载的内置命名空间。
由于 Built-in 处于 LEGB 查找链路的最末端,开发者在编写代码时如果定义了同名的全局或局部变量(例如 list = [1, 2, 3] 或 dict = {'a': 1}),局部变量会直接遮蔽(Shadowing)底层同名的内置函数,导致后续调用 list() 时抛出 TypeError: 'list' object is not callable 异常。
import builtins,调用 builtins.list() 或使用 del list 清理当前命名空间中的遮蔽符号以恢复原始内置函数。
二、Python 3 内置函数全量分类速查表(71 个函数)
按照实际开发中的功能边界与应用场景,Python 3 的 71 个内置函数划分为 7 大核心维度。以下各表列出函数签名、核心功能、返回值及高频使用场景。
1. 数值计算与数学运算(7 个)
负责标量计算、绝对值、极值筛选、除法商余以及浮点舍入:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| abs() | abs(x) | 计算绝对值;若参数为复数则返回其模长 | int / float | 距离计算、物理量取正、复数模长 abs(3+4j) == 5.0 |
| divmod() | divmod(a, b) | 同时计算两数相除的商与余数 (a // b, a % b) |
tuple | 时间转换(分秒换算)、分页计算(总页数与余数),比单独算两次更高效 |
| max() | max(iterable, *[, key, default]) | 获取可迭代对象或参数列表中的最大值,支持 key 排序函数 |
Any | 排行榜极值筛选;序列为空时若未传 default 会抛 ValueError |
| min() | min(iterable, *[, key, default]) | 获取可迭代对象或参数列表中的最小值,支持 key 排序函数 |
Any | 下限截断、查找最短字符串、最低价格筛选 |
| pow() | pow(base, exp[, mod]) | 计算幂运算;三参数形式高效计算 (base ** exp) % mod |
int / float | 三参数形式采用蒙哥马利模幂算法,用于 RSA 等密码学计算,速度远超手动求模 |
| round() | round(number[, ndigits]) | 浮点数舍入;采用“银行家舍入”(四舍六入五成双)规则 | int / float | 注意:round(2.5) == 2 而 round(3.5) == 4,逢五向最近偶数舍入 |
| sum() | sum(iterable, /, start=0) | 从 start 开始对可迭代对象的元素自左向右累加求和 |
int / float | 数值累加;不可用于拼接字符串(应使用 "".join()) |
2. 数据类型构建与类型转换(14 个)
Python 最基础的数据结构构造器与类型转换函数:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| bool() | bool([x]) | 将任意对象转换为布尔值 True 或 False | bool | 判定容器是否非空、数值非零;由对象的 __bool__ 或 __len__ 决定 |
| bytearray() | bytearray([source[, encoding[, errors]]]) | 创建可变字节数组 | bytearray | 低开销网络协议组包、原地修改二进制流、音视频裸数据缓冲区处理 |
| bytes() | bytes([source[, encoding[, errors]]]) | 创建不可变的二进制字节序列 | bytes | 网络传输、加密签名计算、文件二进制读取(open('file', 'rb') 输出) |
| complex() | complex([real[, imag]]) | 创建复数对象 real + imag*1j |
complex | 信号处理、傅里叶变换、科学计算与阻抗分析 |
| dict() | dict(**kwarg) / dict(mapping, **kwarg) | 创建哈希字典键值对映射 | dict | dict(zip(keys, vals)) 快速组装字典;基于哈希表 O(1) 查找 |
| float() | float([x]) | 将数字或符合规范的字符串转为双精度浮点数 | float | 解析 "3.14" 或 "1e-4",也支持 float('inf') / float('nan') |
| frozenset() | frozenset([iterable]) | 创建不可变的无序唯一集合 | frozenset | 不可变且可哈希,可用作字典的 Key 或作为外层 set 的元素 |
| int() | int([x, base=10]) | 将数字截断或将指定进制字符串转为整型 | int | int("ff", 16) == 255;浮点数转整数时直接截断小数部分(非四舍五入) |
| list() | list([iterable]) | 将可迭代对象物化为全新可变动态数组 | list | 消耗生成器、复制列表副本 list(data)、切片消费 |
| memoryview() | memoryview(obj) | 创建支持缓冲区协议对象的内存切片视图 | memoryview | 零拷贝(Zero-copy)切片处理大文件或套接字 IO,避免海量内存开销 |
| object() | object() | 创建所有 Python 类的顶层空白基类实例 | object | 常用于定义不可伪造的哨兵对象(Sentinel),如 _MISSING = object() |
| set() | set([iterable]) | 创建可变无序去重集合 | set | 快速数据去重、交集 &、并集 |、差集 - 集合运算 |
| str() | str(object='') | 将对象转为面向人类的可读字符串 | str | 优先调用 __str__;常用于日志展示、页面渲染与文本组装 |
| tuple() | tuple([iterable]) | 将可迭代对象转换为不可变定长元组 | tuple | 保护只读数据、作为字典键、轻量结构化记录、解包赋值 |
3. 编码、进制与文本格式化(7 个)
字符编码转换、进制解析与字符串格式化:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| ascii() | ascii(object) | 类似 repr(),但将非 ASCII 字符转义为 \x、\u 或 \U | str | 确保终端打印或协议报文中仅包含纯 ASCII 字符,防止终端乱码 |
| bin() | bin(x) | 将整数转换为二进制表示的字符串(带 0b 前缀) |
str | 位运算调试、按位掩码分析 bin(10) == '0b1010' |
| chr() | chr(i) | 将 Unicode 码位整数转换为对应的单字符字符串 | str | chr(65) == 'A',chr(0x4e2d) == '中';合法范围 0 ~ 0x10FFFF |
| format() | format(value[, format_spec]) | 按照格式化规范将值转换为格式化文本 | str | 数值对齐、千分位逗号 format(1000000, ',')、百分比格式化 |
| hex() | hex(x) | 将整数转换为小写十六进制字符串(带 0x 前缀) |
str | 内存地址展示、颜色代码转换、十六进制报文协议解析 |
| oct() | oct(x) | 将整数转换为八进制字符串(带 0o 前缀) |
str | Linux 权限控制(如文件模式 0o755、0o600)计算与校验 |
| ord() | ord(c) | 返回长度为 1 的 Unicode 字符对应的整数码位 | int | ord('A') == 65,字符哈希计算、凯撒密码偏移、编码解析 |
4. 序列与迭代器处理(13 个)
Python 数据流式处理管道的核心基础,支持惰性求值与高效数据聚合:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| all() | all(iterable) | 若可迭代对象全部元素为真,返回 True;遇假值短路返回 False | bool | 批量业务规则校验:all(cond(x) for x in items);空集返回 True |
| any() | any(iterable) | 若可迭代对象任一元素为真,短路返回 True;全假则返回 False | bool | 权限检查(是否具备任一角色)、关键字命中检测;空集返回 False |
| enumerate() | enumerate(iterable, start=0) | 生成包含计数值与元素的元组流 (idx, item) |
enumerate | 替代传统 i += 1 计数,支持自定义起始偏移 start=1 |
| filter() | filter(function, iterable) | 过滤序列,保留使 function(item) 为真的元素 |
filter | 传 None 时自动过滤假值;返回惰性迭代器,避免中间内存占用 |
| iter() | iter(object[, sentinel]) | 返回迭代器;双参数模式下循环调用可调用对象直至遇到哨兵值 | iterator | 双参数模式读取固定块文件:iter(partial(f.read, 1024), b'') |
| len() | len(s) | 返回容器对象中的元素数量(长度) | int | 直接读取对象头部的 ob_size 字段,时间复杂度 O(1) |
| map() | map(function, iterable, ...) | 对一个或多个序列的元素依次执行映射转换 | map | 数据清洗转换 map(int, str_list);返回惰性迭代器 |
| next() | next(iterator[, default]) | 获取迭代器的下一个元素;耗尽时若提供 default 则返回该默认值 | Any | 必须提供 default 避免捕获 StopIteration 异常中断流程 |
| range() | range(start, stop[, step]) | 生成不可变的等差连续整数序列 | range | 无论范围多大(如 10**9),仅占用极小固定元信息内存 |
| reversed() | reversed(seq) | 返回序列的反向迭代器 | iterator | 不翻转原序列,要求对象实现 __reversed__ 或支持索引与长度协议 |
| slice() | slice(start, stop[, step]) | 构造切片对象,等价于索引切片语法 [start:stop:step] |
slice | 可作为命名对象在多处复用切片规则,提高数据提取的可维护性 |
| sorted() | sorted(iterable, /, *, key=None, reverse=False) | 对任意可迭代对象排序,并返回一个全新的排序后列表 | list | 采用 Timsort 稳定排序算法;不影响原输入对象,支持任意复杂提取的 key |
| zip() | zip(*iterables, strict=False) | 并行聚合多个可迭代对象对应位置的元素 | zip | Python 3.10+ 引入 strict=True,长度不一致时立即抛异常防止数据漏对齐 |
5. 异步迭代器辅助(2 个,Python 3.10+)
为 async/await 异步编程模型提供像标准迭代器一样的底层交互能力:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| aiter() | aiter(async_iterable) | 获取异步可迭代对象的异步迭代器(等价于调用 __aiter__()) |
async_iterator | 异步流式处理、WebSocket 流消费、异步数据总线生成器消费 |
| anext() | anext(async_iterator[, default]) | 等待获取异步迭代器的下一个元素(等价于 await aiterator.__anext__()) |
Awaitable | 耗尽时触发 StopAsyncIteration 或返回设定的 default 值 |
6. 对象反射与属性存取(11 个)
Python 动态特性与元编程的核心工具集,实现属性拦截与类型内省:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| callable() | callable(object) | 检查对象是否可以像函数一样被调用 | bool | 函数、方法、类或定义了 __call__ 的对象均返回 True;防范 TypeError |
| delattr() | delattr(object, name) | 动态删除对象的指定属性,等价于 del getattr(obj, name) |
None | 状态机重置、清理对象上的临时挂载缓存、解绑动态监听器 |
| dir() | dir([object]) | 返回对象的所有合法属性与方法列表(包含继承与魔术方法) | list | 交互式调试、插件反射探查;无参时返回当前局部命名空间的名称列表 |
| getattr() | getattr(object, name[, default]) | 动态获取对象的属性值,支持提供回退默认值 | Any | 动态调用插件方法、解耦配置项;推荐始终提供 default 参数 |
| hasattr() | hasattr(object, name) | 判断对象是否包含指定名称的属性 | bool | 鸭子类型特性检查;内部通过调用 getattr 并捕获 AttributeError 实现 |
| hash() | hash(object) | 返回对象的哈希整数值 | int | 仅不可变类型(int, str, tuple, frozenset)支持;用于字典与集合底层寻址 |
| id() | id(object) | 返回对象的唯一内存标识符 | int | 在 CPython 中为该对象在堆上的虚拟内存地址;is 操作符通过对比 id 实现 |
| isinstance() | isinstance(object, classinfo) | 判断对象是否为指定类型或其派生子类的实例 | bool | 支持元组传入多类型 (int, float);天然支持面向对象继承与多态 |
| issubclass() | issubclass(class, classinfo) | 判断一个类是否是另一个类的直接或间接派生子类 | bool | 框架基类扩展校验;类与自身对比返回 True |
| setattr() | setattr(object, name, value) | 动态为对象添加或修改属性,等价于 obj.name = value |
None | 字典映射为对象属性、依赖注入、单测中动态 打桩(Monkey Patching) |
| type() | type(object) / type(name, bases, dict) | 返回对象的精确所属类型;三参数形式用于动态元编程构造新类 | type | 严禁使用 type(x) is Base 校验多态(该写法无法识别子类) |
7. 作用域探查与动态求值(8 个)
代码动态编译、符号表查询与解释器调试交互:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| breakpoint() | breakpoint(*args, **kws) | 触发底层系统调试器断点(Python 3.7+) | None | 内部调用 sys.breakpointhook(),默认进入 pdb 交互,可通过环境变量解耦 |
| compile() | compile(source, filename, mode, ...) | 将 Python 源代码文本编译为字节码 Code 对象 | code | 高频 eval/exec 前先预编译,避免每次执行重复解析 AST 的性能损耗 |
| eval() | eval(expression[, globals[, locals]]) | 动态计算单一 Python 表达式字符串并返回结果 | Any | 严禁直接传入未经清洗的外部用户输入;执行公式计算应传入受限 globals 字典 |
| exec() | exec(object[, globals[, locals]]) | 动态执行多行 Python 代码块、类定义或复杂控制流 | None | 动态插件执行、DSL 规则解析;返回值始终为 None |
| globals() | globals() | 返回当前模块全局命名空间的字典引用 | dict | 返回的是真实的全局符号表引用,直接修改其中的键值对会实时影响全局变量 |
| locals() | locals() | 返回当前局部命名空间的字典视图 | dict | 函数内返回的是拷贝快照,在函数作用域内修改 locals() 不会更新局部变量 |
| vars() | vars([object]) | 返回模块、类或实例的 __dict__ 属性字典 |
dict | 快速将对象实例属性转换为字典序列化输出;无参数调用时等价于 locals() |
| __import__() | __import__(name, globals, locals, fromlist, level) | 解释器底层的模块导入机制入口 | module | 日常开发推荐使用标准库 importlib.import_module(),避免直接调用此底层原语 |
8. 类结构、修饰器与辅助工具(9 个)
面向对象方法定义、类托管属性、系统标准 IO 与交互文档:
| 函数名 | 参数签名 | 核心功能与说明 | 返回类型 | 高频场景与注意事项 |
|---|---|---|---|---|
| classmethod() | classmethod(function) | 将方法声明为类方法,首参数绑定为类对象 cls |
method | 实现备选构造函数(如 from_dict(), from_json())的标准模式 |
| staticmethod() | staticmethod(function) | 将方法声明为静态方法,不隐式接收实例或类对象 | function | 将逻辑相关但不需要访问内部状态的纯函数挂载在类命名空间中 |
| property() | property(fget=None, fset=None, fdel=None, doc=None) | 创建托管属性描述符,绑定 Getter/Setter/Deleter | property | 实现属性读取的惰性求值、赋值前的边界合法性校验与只读封装 |
| super() | super([type[, object-or-type]]) | 返回代理对象,委托调用父类或兄弟类的方法 | super | 遵循 MRO 线性解析顺序,解决多重继承中的“菱形继承”重复初始化问题 |
| help() | help([object]) | 启动内置交互式帮助系统,或输出指定对象的 docstring 文档 | None | 终端交互模式下快速查看函数说明、参数定义与类方法内省 |
| input() | input([prompt]) | 从标准输入读取一行文本,自动去除末尾换行符 | str | 终端命令行交互;读取结束触发 EOF 时抛出 EOFError |
| open() | open(file, mode='r', buffering=-1, encoding=None, ...) | 打开本地文件流并返回对应的流式文件对象 | IOBase | 操作文本文件时必须显式指定 encoding='utf-8',严禁依赖系统平台默认编码 |
| print() | print(*objects, sep=' ', end='\n', file=None, flush=False) | 将对象序列格式化输出至文件流或终端控制台 | None | 实时流式输出控制台进度时可配合 flush=True 立即刷新缓冲区 |
| repr() | repr(object) | 返回对象的规范化、面向开发者与调试的字符串表示 | str | 契约要求尽量满足 eval(repr(obj)) == obj,精准排查空格、类型等细微差异 |
三、高频序列与流式数据管道组合模式
在实际工程开发中,单独调用某个内置函数往往只完成一个细分操作,而将多个内置函数按数据流编排为“管道”(Pipeline),能够发挥惰性求值的最大威力,以极致的内存开销处理海量数据。
1. 稳健的多序列配对:zip(..., strict=True) 与 enumerate()
在 Python 3.10 之前,zip() 会默认在最短的序列耗尽时静默停止。当处理数据表或对应字段时,由于网络截断或缺失数据导致的长度不一致会被完全掩盖。开启 strict=True 能在发生长度不匹配时立刻抛出异常:
# 示例环境:Python 3.10+ 标准解释器
headers = ["id", "name", "role"]
row_valid = [101, "Alice", "Admin"]
row_invalid = [102, "Bob"]
# 组合使用 zip 与 dict 构建结构化映射
user_record = dict(zip(headers, row_valid, strict=True))
print("构建映射结果:", user_record)
# 验证长度不匹配时的严谨拦截
try:
bad_record = dict(zip(headers, row_invalid, strict=True))
except ValueError as err:
print("长度不匹配异常拦截:", err)
示例输出:
构建映射结果: {'id': 101, 'name': 'Alice', 'role': 'Admin'}
长度不匹配异常拦截: zip() argument 2 is shorter than argument 1
2. 谓词过滤与全量/任一短路评估:all() 与 any()
all() 与 any() 配合生成器表达式时具备“短路求值”(Short-circuiting)机制。一旦结果可确定,后续的所有昂贵计算都会立即终止,避免不必要的网络或磁盘开销:
# 批量合规性检查(短路演示)
transactions = [
{"tx_id": 1, "amount": 50, "risk_score": 12},
{"tx_id": 2, "amount": 1200, "risk_score": 88}, # 高风险
{"tx_id": 3, "amount": 300, "risk_score": 5}
]
# 检查是否所有交易均低于风险阈值(只要遇到 tx_id=2 即刻短路返回 False)
is_all_safe = all(tx["risk_score"] < 50 for tx in transactions)
# 检查是否存在超大额异常交易(> 1000 元)
has_large_tx = any(tx["amount"] > 1000 for tx in transactions)
print("全部安全:", is_all_safe, "| 存在大额交易:", has_large_tx)
示例输出:
全部安全: False | 存在大额交易: True
四、动态反射与属性系统的工程化实践
Python 的高度动态性来源于其完备的运行时内省与反射能力。通过 getattr(), hasattr(), setattr() 和 delattr(),可以构建极具扩展性的插件总线与动态工厂。
1. 优雅处理未定义属性:防御性 getattr()
直接访问 obj.missing_attribute 会抛出 AttributeError 并中断调用栈。在面向插件架构或动态配置文件时,推荐始终使用提供默认回退值的 getattr():
class MessageDispatcher:
def handle_text(self, payload):
return f"文本消息已解析: {payload}"
def default_fallback(self, payload):
return f"未知类型消息已记录日志: {payload}"
dispatcher = MessageDispatcher()
for msg_type, content in [("text", "你好,世界"), ("video", "video.mp4")]:
handler_name = f"handle_{msg_type}"
# 动态获取处理器,若不存在则回退至 default_fallback
handler = getattr(dispatcher, handler_name, dispatcher.default_fallback)
result = handler(content)
print(result)
示例输出:
文本消息已解析: 你好,世界
未知类型消息已记录日志: video.mp4
2. 类型判定:为何严禁使用 type() is Cls
在实际代码审查中,常看到使用 if type(inst) is BaseClass: 进行类型校验的错误模式。这种方式破坏了面向对象的继承机制——任何派生自 BaseClass 的子类都会被直接判定为不匹配。工程实践中必须统一使用 isinstance():
class BaseNotifier:
pass
class EmailNotifier(BaseNotifier):
pass
notifier = EmailNotifier()
# 错误方式:破坏多态
print("type() 比对:", type(notifier) is BaseNotifier) # False! 无法识别子类
# 正确方式:支持继承链
print("isinstance() 比对:", isinstance(notifier, BaseNotifier)) # True
五、作用域探查与动态求值的边界与安全陷阱
eval(), exec(), globals() 与 locals() 赋予了 Python 极高的灵活性,但也常伴随着严重的代码注入漏洞与作用域混淆隐患。
1. eval() 的安全执行边界
若因业务需求(如执行用户定义的数学公式计算)必须使用 eval(),严禁直接执行,必须显式清空 __builtins__ 以切断文件读写、系统命令执行等危险能力:
def safe_calculate(expr: str, context: dict):
# 显式禁止访问 __builtins__ 下的所有内置模块与系统函数
restricted_globals = {"__builtins__": None}
# 仅注入允许参与运算的安全数学函数或变量
restricted_locals = {
"abs": abs,
"round": round,
"min": min,
"max": max,
**context
}
return eval(expr, restricted_globals, restricted_locals)
# 合法公式求值
result = safe_calculate("round(price * discount, 2)", {"price": 199.9, "discount": 0.85})
print("受限求值结果:", result)
示例输出:
受限求值结果: 169.91
LOAD_FAST / STORE_FAST 极速读取)。因此,在函数内部调用 locals() 时,解释器只是临时将底层数组中的变量复制一份构造为字典。修改该字典不会同步反写回局部变量数组。
六、高频易混淆函数辨析与避坑要点
许多内置函数在表面签名或功能上有交集,但在底层的设计契约、性能特征及边界情况上存在关键差异:
1. repr() vs str():契约目标的分野
str(obj):面向终端用户。目标是输出清晰、易读、符合自然语言直觉的字符串。repr(obj):面向开发者与调试诊断。目标是明确、无歧义,并尽量满足eval(repr(obj)) == obj的等价还原性。
例如对于时间对象 now = datetime.now(),str(now) 输出形如 "2026-11-01 19:30:00",而 repr(now) 则输出 "datetime.datetime(2026, 11, 1, 19, 30, 0)"。在日志记录、调试打印与异常分析时,始终推荐使用 repr() 消除歧义。
2. round() 的“银行家舍入”陷阱
初学者通常认为 round() 采用的是算术上的“四舍五入”。但在 IEEE 754 规范中,Python 实现了“四舍六入五成双”(Round half to even):
round(2.5)返回2(向偶数舍入);round(3.5)返回4(向偶数舍入)。
这种设计可以在海量金融数据求和时消除累积向上偏置,实现统计上的期望平衡。如果业务上严格要求财务级算术四舍五入,必须使用标准库 decimal.Decimal 配合 ROUND_HALF_UP 策略。
3. sorted() vs list.sort()
sorted(iterable) 是内置函数,接受任意可迭代对象,分配新内存并返回一个排好序的全新 list,原数据不受任何影响;而 list.sort() 是列表的实例方法,直接在原地(In-place)修改原列表并返回 None。当数据体量极大且不再需要旧列表时,优先使用 list.sort() 节约内存。
七、内置函数开发选型与场景速查决策指南
面对具体开发任务时,根据数据特征、内存诉求与性能边界,参考以下选型决策树进行技术选型:
| 核心场景诉求 | 首选内置函数 | 备选方案或次优解 | 关键选型决策理由 |
|---|---|---|---|
| 检查多个业务条件是否全部/任一满足 | all() / any() |
显式 for 循环 break | 短路求值特性,代码表达高度声明化,执行速度更快 |
| 在循环中同步获取元素索引 | enumerate(seq, start) |
手动维护 i += 1 |
消除手动递增状态,支持指定起始偏移量,更加 Pythonic |
| 同时遍历多组并行业务数据 | zip(a, b, strict=True) |
下标索引 a[i], b[i] |
启用 strict=True 防范数据截断,消除手动越界风险 |
| 除法运算中需要商与余数 | divmod(a, b) |
分别执行 // 和 % |
单次 C 底层调用同时产出商余,减少一次运算周期 |
| 动态读取对象属性并提供默认兜底 | getattr(obj, k, dft) |
hasattr() + 属性访问 |
避免两次属性查找引发的竞态条件与多余开销 |
| 类型及多态继承关系校验 | isinstance(x, Cls) |
type(x) is Cls |
严格遵循面向对象继承与 LSP 原则,支持子类实例校验 |
| 单步交互式断点调试 | breakpoint() |
import pdb; pdb.set_trace() |
解耦底层调试器,可通过环境变量 PYTHONBREAKPOINT=0 一键禁用 |
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













