Python 内置函数完全参考

见 数据类型(/python-nei-zhi-shu-ju-lei-xing-wan-quan-can-kao/) range 章节。 返回 (index, value) 元组的迭代器。 并行遍历多个迭代器,以最短的为准(strict=False 时)。 返回惰性迭代器,需要 list() 消费。 返回新列表,不修改原对象(区别于 list.sort() 原地排序)。 返回反向迭代器(不创建新列表),要求序列支持 __reversed__ 或 __len__ + __getitem__。 any:任意一个为真返回 True;空迭代器返回 False。 a

分享

官方文档:https://docs.python.org/3/library/functions.html
适用版本:Python 3.13(2026-05-08 核实)


迭代与序列

range(start=0, stop, step=1)

数据类型 range 章节。

enumerate(iterable, start=0) -> enumerate

参数 说明
iterable 可迭代对象
start 计数起始值,默认 0

返回 (index, value) 元组的迭代器。

for i, item in enumerate(['a', 'b', 'c'], start=1):
    print(i, item)   # 1 a, 2 b, 3 c

zip(*iterables, strict=False) -> zip

参数 说明
*iterables 任意多个可迭代对象
strict Python 3.10+;True 时长度不一致抛 ValueError

并行遍历多个迭代器,以最短的为准(strict=False 时)。

names = ['Alice', 'Bob']
scores = [90, 85]
for name, score in zip(names, scores):
    print(name, score)

# 解压(unzip)
pairs = [(1, 'a'), (2, 'b')]
nums, letters = zip(*pairs)   # (1, 2), ('a', 'b')

map(function, *iterables, strict=False) -> map

参数 说明
function 应用到每个元素的函数;多个 iterable 时接受对应数量的参数
*iterables 一个或多个可迭代对象(多个时同 zip 一样以最短为准)
strict Python 3.14+;True 时各 iterable 长度不一致抛 ValueError(同 zip(strict=True)

返回惰性迭代器,需要 list() 消费。

list(map(str, [1, 2, 3]))            # ['1', '2', '3']
list(map(lambda x, y: x + y, [1,2], [3,4]))  # [4, 6]

# 推荐用推导式代替简单 map
[str(x) for x in [1, 2, 3]]         # 更 Pythonic

filter(function, iterable) -> filter

参数 说明
function 返回布尔值的函数;None 表示过滤掉假值
iterable 可迭代对象
list(filter(None, [0, 1, '', 'a', None, 2]))  # [1, 'a', 2]
list(filter(lambda x: x > 0, [-1, 0, 1, 2])) # [1, 2]

sorted(iterable, *, key=None, reverse=False) -> list

参数 说明
iterable 任意可迭代对象
key 排序键函数(接受单个元素,返回用于比较的值)
reverse True 降序

返回新列表,不修改原对象(区别于 list.sort() 原地排序)。

sorted([3, 1, 2])                                # [1, 2, 3]
sorted('hello')                                  # ['e', 'h', 'l', 'l', 'o']
sorted(items, key=lambda x: x['score'], reverse=True)
sorted(items, key=lambda x: (x['age'], x['name']))  # 多字段排序

reversed(sequence) -> reversed

返回反向迭代器(不创建新列表),要求序列支持 __reversed____len__ + __getitem__

list(reversed([1, 2, 3]))   # [3, 2, 1]

any(iterable) -> bool / all(iterable) -> bool

any:任意一个为真返回 True;空迭代器返回 False
all:全部为真返回 True;空迭代器返回 True

any(x > 0 for x in [-1, 0, 1])   # True
all(x > 0 for x in [1, 2, 3])    # True

使用生成器表达式(不加 []),利用短路特性。

sum(iterable, /, start=0)

参数 说明
iterable 数值可迭代对象
start 初始累加值,默认 0
sum([1, 2, 3])               # 6
sum([[1,2], [3,4]], [])      # [1, 2, 3, 4](列表拼接)

Python 3.12 起,浮点数求和使用更高精度算法(Neumaier 补偿求和),减少浮点累积误差。精确计算仍推荐 math.fsum()

min(iterable, *, key=None, default=...) / max(...)

参数 说明
iterable*args 可迭代对象或多个位置参数
key 比较键函数
default 迭代器为空时的返回值(不提供则抛 ValueError
min([3, 1, 2])                             # 1
max(items, key=lambda x: x['score'])       # 分数最高的 item
min([], default=0)                         # 0(空时不报错)

类型/对象相关

type(object) -> type / type(name, bases, dict) -> type

单参数:返回对象的类型。三参数:动态创建类。

type(42)          # <class 'int'>
type([])          # <class 'list'>
type('MyClass', (object,), {'x': 1})   # 动态创建类

isinstance(object, classinfo) -> bool

参数 说明
object 要检查的对象
classinfo 类、类型,或类型元组(满足其一即 True);Python 3.10+ 起也接受联合类型(int | str
isinstance(42, int)              # True
isinstance(42, (int, float))     # True
isinstance('hello', str)         # True

# Python 3.10+:支持 X | Y 联合类型语法
isinstance(42, int | float)      # True

# 注意:bool 是 int 的子类
isinstance(True, int)            # True

issubclass(class, classinfo) -> bool

检查类的继承关系。Python 3.10+ 起 classinfo 也接受联合类型(int | str)。

issubclass(bool, int)          # True
issubclass(bool, int | float)  # True(Python 3.10+)

hasattr(object, name) -> bool

hasattr(obj, 'method')   # 等价于 try: getattr(obj, 'method') except AttributeError: False

getattr(object, name, default=...)

参数 说明
object 对象
name 属性名(字符串)
default 属性不存在时返回;不提供则抛 AttributeError
getattr(obj, 'method', None)   # 安全获取属性
getattr(obj, method_name)()    # 动态调用方法

setattr(object, name, value)

动态设置属性。

delattr(object, name)

动态删除属性。

callable(object) -> bool

检查对象是否可调用(有 __call__)。

callable(print)       # True
callable(42)          # False
callable(lambda: 1)   # True

id(object) -> int

返回对象的唯一标识符(CPython 中是内存地址)。用于判断两个变量是否指向同一对象。

hash(object) -> int

返回对象哈希值(用于 dict/set 存储)。不可变对象才可哈希。


数值

abs(x)

绝对值,支持 intfloatcomplex(返回模)。

round(number, ndigits=None)

参数 说明
number 要舍入的数
ndigits 保留小数位数;None 返回 int;负数对整数部分舍入
round(3.14159, 2)   # 3.14
round(2.5)          # 2(银行家舍入,Python 3)
round(3.5)          # 4
round(1234, -2)     # 1200

注意:Python 3 用银行家舍入(四舍六入五成双),2.5 → 2 而非 3

divmod(a, b) -> (quotient, remainder)

返回 (a // b, a % b),一次计算整除和余数。

divmod(17, 5)   # (3, 2)

pow(base, exp, mod=None)

参数 说明
base 底数
exp 指数
mod 模(三参数时等价于 (base**exp) % mod,但更高效,用于密码学)
pow(2, 10)          # 1024
pow(2, 10, 1000)    # 24(等价于 1024 % 1000,但用快速模幂)

bin(x) -> str / oct(x) -> str / hex(x) -> str

整数转二进制/八进制/十六进制字符串(带前缀)。

bin(10)   # '0b1010'
oct(10)   # '0o12'
hex(255)  # '0xff'

int(x=0, base=10)

字符串按指定进制解析:

int('0xff', 16)    # 255
int('0b1010', 2)   # 10
int('0o17', 8)     # 15
int('ff', 16)      # 255(不需要前缀)

chr(i) -> str / ord(c) -> int

Unicode 码点 ↔ 字符互转。

chr(65)    # 'A'
ord('中')  # 20013

输入/输出

print(*objects, sep=' ', end='\n', file=None, flush=False)

参数 说明
*objects 要打印的对象,逐个调用 str()
sep 对象之间的分隔符,默认空格
end 末尾字符,默认换行
file 输出目标,默认 sys.stdout
flush 是否立即刷新缓冲区
print('a', 'b', 'c', sep=', ', end='!\n')   # a, b, c!
print('loading...', end='', flush=True)      # 无换行,立即输出
print('error', file=sys.stderr)             # 输出到标准错误

input(prompt='') -> str

显示提示并等待用户输入,始终返回字符串。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数 常用值 说明
file 路径/文件描述符 要打开的文件
mode 'r'/'w'/'a'/'rb'/'wb' 读/写/追加/二进制读/二进制写
buffering -1 -1 系统默认;0 无缓冲(仅二进制);1 行缓冲(文本);>1 指定缓冲区大小
encoding 'utf-8' 文本模式的编码,None 用系统默认(Windows 常为 GBK!)
errors 'strict' 编码错误处理策略
newline None 换行符处理(None 通用换行;'' 不转换)
# 最佳实践:始终指定编码,使用上下文管理器
with open('file.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 二进制读取
with open('image.png', 'rb') as f:
    data = f.read()

反射/元编程

dir(object=None) -> list

返回对象的属性/方法列表(按字母排序)。None 返回当前作用域名称。

vars(object=None) -> dict

返回对象的 __dict__(实例属性字典)。无参数返回当前局部变量字典。

globals() -> dict / locals() -> dict

返回全局/局部命名空间字典。

eval(expression, globals=None, locals=None)

执行字符串表达式并返回结果。

安全警告:不要对用户输入使用 eval,有代码注入风险。

exec(object, globals=None, locals=None)

执行代码对象或字符串,无返回值。


对象创建

object() / super() / property() / staticmethod() / classmethod()

property(fget=None, fset=None, fdel=None, doc=None)

创建属性描述符。常用装饰器形式:

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError('半径不能为负')
        self._radius = value

    @property
    def area(self):
        import math
        return math.pi * self._radius ** 2

迭代器/生成器

iter(object, sentinel=None)

参数 说明
object 可迭代对象(或可调用对象,配合 sentinel
sentinel 哨兵值;当调用 object() 返回该值时停止迭代
# 两参数形式:从文件逐行读取直到空行
for line in iter(file.readline, ''):
    process(line)

next(iterator, default=...)

参数 说明
iterator 迭代器对象
default 迭代耗尽时返回;不提供则抛 StopIteration
it = iter([1, 2, 3])
next(it)          # 1
next(it, None)    # 在耗尽时返回 None

常用速查表

函数 输入 输出 特点
sorted() iterable list 稳定,Timsort,O(n log n)
reversed() sequence 迭代器 惰性,不创建新列表
enumerate() iterable 迭代器 带索引遍历
zip() *iterables 迭代器 并行遍历,以短者为准
map() func, iterable 迭代器 惰性变换
filter() func, iterable 迭代器 惰性过滤
any() / all() iterable bool 短路求值
sum() iterable 数值 start 参数可拼接列表
min() / max() iterable 元素 支持 keydefault

最佳实践

key 参数替代 lambda + 手动比较sorted(items, key=lambda x: x.price) 比手写比较函数更简洁;key=str.lower 等内置方法作为 key 比 lambda 快(避免 Python 函数调用开销)。

zip 配合 strict=True 验证等长:Python 3.10+ 的 zip(..., strict=True) 在可迭代对象长度不一致时抛出 ValueError,比静默截断更安全:

for a, b in zip(list1, list2, strict=True):
    process(a, b)

enumerate 替代 range(len(...))for i, item in enumerate(items)for i in range(len(items)) 更 Pythonic,且能直接获取元素无需下标访问。

any() / all() 利用短路特性any(is_valid(x) for x in items) 生成器表达式配合短路,找到第一个有效值即停止,比先生成列表再 any 高效。

vars() / dir() 用于调试,不用于生产逻辑vars(obj) 返回 obj.__dict__dir(obj) 返回所有属性名,是调试利器,但生产代码应用明确的属性访问而非反射。


常见陷阱

陷阱:sorted()list.sort() 返回值不同

现象: result = mylist.sort()resultNone,而不是排序后的列表。
原因: list.sort() 原地排序并返回 Nonesorted() 返回新列表,不修改原列表。
解决: 需要新列表用 sorted(mylist);需要原地排序用 mylist.sort()(不接收返回值)。

陷阱:map() / filter() 是惰性迭代器,只能消费一次

现象: m = map(int, strs)list(m) 正常,再次 list(m) 得到空列表。
原因: mapfilter 返回迭代器(不是列表),遍历后耗尽,不能重复消费。
解决: 需要多次使用时转换为列表 list(map(...)),或重新创建迭代器。

陷阱:id() 不能用于判断对象相等

现象: 两个 id() 相同的对象在不同时刻可能是不同对象,判断逻辑出错。
原因: CPython 的 id() 是内存地址,小整数、短字符串有缓存池(interning),但一般对象销毁后地址可被复用,不保证唯一性跨时间段有效。
解决: 判断对象同一性用 is,判断值相等用 ==,不要依赖 id() 做业务逻辑。


参见

装饰器与函数高级
itertools与functools完全指南
数据类型

阅读更多

Web 安全基础

1. HTML 转义(服务端渲染必须): 2. CSP(Content Security Policy): 3. HttpOnly Cookie:防止 JS 读取会话 Cookie: 4. 前端框架防护: 攻击者在第三方网站构造一个表单,诱导已登录用户提交,浏览器会自动携带目标站的 Cookie。 触发条件: 1. 用户已登录目标网站(Cookie 有效) 2. 目标 API 仅凭 Cookie 识别用户身份 3. 请求来源未验证 1. CSRF Token(推荐): 2. SameSite Cookie: 3. 验证 Origin/Referer 头:

By yellowdog

HTTP 协议深度指南

HTTP(HyperText Transfer Protocol)是 Web 的基础传输协议,基于 TCP/IP,采用请求/响应模型。 相关文档:Web安全基础(/web-an-quan-ji-chu/) FastAPI完全指南(/fastapi-wan-quan-zhi-nan/) Nginx完全指南(/nginx-wan-quan-zhi-nan/) 幂等性:多次执行相同请求,服务器状态结果相同。PUT /users/1 多次执行结果一致;POST /users 每次创建新资源,非幂等。 浏览器直接从本地缓存读取,不向服务器发送请求。 缓存命中时,状

By yellowdog

系统设计基础

SLA 对照表: 选择建议:无状态服务(Web 层、API 层)优先水平扩展;数据库初期垂直扩展,达到瓶颈后考虑分库分表或读写分离。 缓存穿透(查询不存在的 key,每次都打到 DB): 缓存击穿(热点 key 过期,瞬间大量请求打到 DB): 缓存雪崩(大量 key 同时过期,或缓存服务宕机): 令牌桶 Python 实现: Redis 实现分布式限流(滑动窗口): URL 命名规则: Cursor 分页响应格式: 雪花算法结构(64 bit): 定义:分布式系统不能同时满足以下三个特性: 在分布式环境中 P 是必须保证的,所以实际是 CP vs AP

By yellowdog

算法思路与模板

二分查找要求序列有序,每次将搜索范围缩减一半,时间复杂度 O(log n)。 两个指针从两端向中间收缩,常用于有序数组。 滑动窗口维护一个满足条件的区间 left, right,right 不断向右扩张,条件不满足时收缩 left。 滑动窗口通用框架: 1. 确定"子问题":原问题可以分解为哪些规模更小的同类问题 2. 定义 dpi 或 dpij 的含义,要足够清晰 3. 推导状态转移方程 4. 确定初始状态(边界条件) 5. 确定计算顺序(确保依赖的子问题先计算) 每件物品最多选一次。dpj = 容量为 j 时的最大价值,逆序遍历容量防止重复选取。 每

By yellowdog