Python 速查 — 简明参考
现代 Python 3 (3.11+) 语法、内置类型与最常用标准库速查手册,覆盖约 80% 日常场景。
Python Python 3.11 (LTS 风格)
CPython · 多范式(OOP · 函数式 · 过程式) · 动态 · 强类型 · 鸭子类型
学习路径
先学会运行 python3 与 REPL → 掌握变量、内置类型与流程控制 → 深入函数、类与异常 → 用标准库读写文件与网络 → 理解引用与可变性(深浅拷贝)→ 再按需学 asyncio、进程与正则 → 最后熟悉 venv/pip/pyproject 工程化。FAQ 节适合回头避坑。
1.Hello World 与构建环境
运行 Python、交互式 REPL、虚拟环境与包管理。
最小程序
print 输出到控制台。Python 用缩进组织代码块,无花括号分号。
运行方式
python3 执行脚本、-c 执行字符串、-m 运行模块。交互式 REPL 立即求值。
虚拟环境
venv 隔离项目依赖。激活后 pip 安装只作用于当前环境。项目必须用虚拟环境。
pip 包管理
pip 安装/卸载/冻结依赖。版本用 ==、范围用 >=、>=x,<y。
pyproject.toml
现代项目配置文件:依赖、构建系统、工具配置统一放在 pyproject.toml。
Shebang 脚本
#!/usr/bin/env python3 让脚本可执行。POSIX 系统 chmod +x 后直接 ./script.py。
REPL 交互
python3 进入 REPL 交互调试。_ 保存上次结果。exit() 退出。
__main__ 与模块
if __name__ == '__main__' 区分直接运行与导入。作为脚本 vs 作为模块的惯用法。
2.变量与类型标注
动态类型、类型注解、多重赋值、作用域与海象运算符。
赋值与推断
变量无需声明,赋值即创建。类型动态推断,可随时改变类型。
类型注解
PEP 484 类型注解,冒号标注变量类型。注解不影响运行时,只是提示与检查。
多重赋值
a, b = b, a 一行交换。扩展解包用 *rest。解包要求数量匹配。
常量约定
Python 无常量关键字。ALL_CAPS 命名模块级常量是惯例。
作用域 LEGB
查找顺序 Local → Enclosing → Global → Built-in。函数内赋值需 global/nonlocal 声明。
海象运算符
:= 赋值表达式在表达式中赋值。3.8+ 特性。避免重复计算。
None 与布尔
None 表示无值。真值测试用 if x 而非 if x == True。空容器为假。
del 与垃圾回收
del 删除变量或容器元素。删除后名字失效,对象引用计数减一。
3.数据类型
内置类型:数值、布尔、序列、映射与集合,以及类型注解进阶。
数值类型
int 任意精度、float 浮点、complex 复数。bool 是 int 子类。除法的两种语义。
布尔与 None
True/False 首字母大写。None 是单例。and/or 短路求值返回操作数。
序列类型
str/list/tuple 都是序列:支持索引、切片、迭代。str/tuple 不可变。
映射 dict
dict 键值对,保持插入顺序。键必须可哈希。.get 安全取值。
集合类型
set 无序去重,frozenset 不可变。并集交集差集运算。
字节类型
bytes 不可变字节、bytearray 可变。encode/decode 编码转换。
类型注解进阶
typing 模块:Optional/Union/TypeVar。泛型容器标注。3.10 起可用 | 语法。
鸭子类型
「能走能叫就是鸭子」:关心对象的行为而非类型。协议(协议)定义接口。
4.引用与可变性
Python 的对象引用语义:可变/不可变、深浅拷贝与共享陷阱。
引用语义
变量绑定到对象而非容器。多个名字可指向同一对象。赋值是绑定不是拷贝。
可变与不可变
可变类型可原地改:list/dict/set。不可变:int/str/tuple/frozenset。
浅拷贝
copy.copy 浅拷贝:外层新对象,内层元素仍共享引用。列表切片也是浅拷贝。
深拷贝
copy.deepcopy 递归复制所有层。嵌套可变结构修改互不影响。注意开销。
共享引用陷阱
多个引用共享同一可变对象时一处修改处处可见。参数传递也是传引用。
is 与 == 的区别
== 比较值,is 比较身份(是否同一对象)。None 判等用 is None。
默认参数陷阱
可变默认参数在定义时求值并共享。用 None 哨兵 + 函数内创建。
驻留与缓存
小整数与短字符串驻留(interning)优化内存。别依赖 is 比较内容。
5.流程控制
条件分支、循环、模式匹配与推导式。
if / elif / else
缩进分层。elif 多个条件。表达式可以是任意布尔判定。
模式匹配
match-case 结构化模式匹配(3.10+)。按形状匹配并解构。
for 循环
for 遍历可迭代对象。enumerate 带索引、zip 并行、dict.items 遍历键值。
while 循环
while 条件为真时循环。配合 break 提前退出。防止死循环。
break 与 continue
break 退出整个循环,continue 跳过本轮。else 子句在未 break 时执行。
推导式
列表/字典/集合推导式一行生成。条件过滤 + 表达式转换。
真值判断
if x 直接判定真值。0/''/[]/None 为假。避免与 True/False 显式比较。
遍历技巧
itertools 高效迭代组合。groupby 分组、chain 拼接、product 笛卡尔积。
6.函数
函数定义、参数传递、装饰器、生成器与闭包。
函数定义
def 定义函数,缩进体。return 返回值,无 return 返回 None。
参数类型
位置参数、关键字参数、默认值。调用可混合位置与关键字。
*args 与 **kwargs
*args 收集多余位置参数为元组,**kwargs 收集多余关键字为字典。
匿名函数
lambda 单表达式匿名函数。用于 key、map/filter 等高阶场景。
闭包
内部函数捕获外部变量。返回函数记住外层作用域。工厂函数常用。
装饰器
@decorator 包装函数。不修改原函数代码而增强行为。计时/日志常用。
生成器
yield 惰性产出值。生成器函数逐项产出,内存友好。大序列处理。
函数式工具
map/filter/reduce/sorted 函数式处理。functools 工具:partial 偏函数。
递归
函数调用自身。必须有基准情形。深度限制约 1000(sys.setrecursionlimit)。
7.字符串
str 不可变、f-string 格式化、常用方法与编码。
字符串基础
单/双/三引号创建。转义序列。str 不可变,操作返回新字符串。
常用方法
upper/lower、strip 去除空白、split 分割、join 拼接、startswith 判断。
f-string 格式化
f"{var}" 插值表达式。格式说明符:对齐、精度、千分位。3.12+ 支持引号复用。
format 与 % 格式化
str.format 位置/命名占位。% 运算符旧式格式化。f-string 更推荐。
分割与拼接
split 按分隔符拆分、rsplit 从右拆、partition 三分。join 高效拼接。
去除与填充
strip 去首尾、lstrip/rstrip 单侧。zfill 补零、center 居中、removeprefix。
Unicode 与编码
Python str 是 Unicode 码点序列。encode 转字节、decode 还原。len 计数点。
查找与替换
find/index 查找、replace 替换、translate 映射替换。count 计数。
文本包装
textwrap 换行排版:wrap 按宽度断行、dedent 去缩进、fill 填充。
8.集合与容器
list/dict/set/tuple 操作、collections 模块与排序。
列表操作
append 尾部、insert 插入、remove 删除、pop 弹出、index 查找、count 计数。
字典操作
取值 .get、合并 update/|、遍历 items、排序 items、嵌套访问。
集合运算
并集 |、交集 &、差集 -、对称差 ^。成员判断 O(1)。去重。
元组用法
tuple 不可变序列。多返回值、记录、字典键。命名元组 namedtuple。
collections 工具
Counter 计数、deque 双端队列、defaultdict 默认值、OrderedDict 有序。
排序
sorted 返回新列表,list.sort 原地。key 指定排序键。reverse 倒序。
切片
seq[start:stop:step] 切片。负索引从尾数。反转、步长、复制。
堆与队列
heapq 堆排序、queue 线程安全队列。优先级处理。
9.内存与性能
垃圾回收、引用计数、内存工具与性能优化。
垃圾回收
引用计数为主 + 分代 GC 处理循环引用。无需手动释放。
memoryview 与零拷贝
memoryview 视图访问缓冲区,避免拷贝。大二进制数据处理高效。
弱引用
weakref.ref 不阻止回收。缓存大对象、避免循环引用泄漏。
__slots__ 省内存
__slots__ 声明固定属性,避免实例 dict。大量小对象省内存提速。
大数据处理
大数据分块处理、惰性迭代、避免一次性载入。流式读文件。
性能分析
cProfile 分析耗时、timeit 微基准。找瓶颈再优化。
性能优化技巧
局部变量快于全局、推导式快于循环、集合查找 O(1)。避免重复计算。
内存常见错误
MemoryError 内存不足、栈溢出 RecursionError、参考循环。诊断工具。
10.类与对象
class 定义、继承、魔术方法、dataclass 与 enum。
类基础
class 定义类型。__init__ 构造初始化。self 指实例。方法绑定到实例。
属性访问
实例属性优先于类属性。setattr/getattr/hasattr 动态访问。property 属性描述。
三种方法
实例方法 self、类方法 cls、静态方法。@staticmethod/@classmethod 装饰。
继承
子类继承父类方法。super() 调父类。方法覆盖。多继承注意 MRO。
魔术方法
双下划线方法定制行为:__repr__ 显示、__eq__ 比较、__len__ 长度、__add__ 加法。
dataclass
@dataclass 自动生成 __init__/__repr__/__eq__。声明式数据类。
Enum 枚举
Enum 定义命名常量集。str 枚举、自动编号、遍历成员。替代魔法数字。
上下文管理器
with 管理资源。__enter__/__exit__ 定制。contextlib.contextmanager 简化。
11.异常处理
try-except、异常层级、自定义异常、with 资源管理。
try / except
捕获异常处理错误。except 捕获特定类型。as e 取异常对象。
else 与 finally
else 在无异常时执行。finally 无论成败都执行(清理资源)。
异常层级
Exception 是所有错误基类。常见:ValueError/TypeError/KeyError/IndexError。
自定义异常
继承 Exception 定义业务异常。带字段与消息。调用方按类型捕获。
raise 与链式
raise 主动抛出。raise ... from ... 链接原因。try 内 raise 重新抛出。
断言
assert 检查不变量。调试期验证。生产可被 -O 关闭,别用于校验用户输入。
异常与日志
logging 记录异常带堆栈。logger.exception 在 except 内记录。
错误处理模式
EAFP 请求宽恕优于许可 vs LBYL 先看后做。守卫子句、早返回。
12.输入输出
print/input、文件读写、pathlib、JSON/CSV 与标准流。
输出与输入
print 多参数、sep/end 分隔。input 读一行字符串。格式化输出。
文件读写
open 模式:r 读/w 写/a 追加/b 二进制。read/readline/readlines。
with 与文件
with 自动关闭文件,异常时也关闭。读文件惯用法。
pathlib 路径
Path 对象跨平台路径:/, exists、mkdir、read_text。替代 os.path。
JSON 读写
json.loads/dumps 序列化。dict/list 与 JSON 互转。ensure_ascii=False 保留中文。
CSV 读写
csv 模块处理逗号分隔。writer 写、reader/DictReader 读。
标准流
sys.stdin/stdout/stderr。管道数据。逐行处理 stdin。
二进制读写
二进制模式读写字节。struct 打包解析、随机访问 seek/tell。
13.常见误区
Python 日常开发最容易踩的坑与正确写法。
可变默认参数
可变默认值在定义时创建并共享,多次调用累积。用 None 哨兵。
is 与 == 混淆
is 比身份,== 比值。小整数/短字符串可能驻留,别依赖 is 判断内容。
循环闭包陷阱
循环中 lambda 捕获延迟绑定变量。立即执行需绑定当前值。
字符串拼接
循环 + 拼接 O(n^2) 慢。join 或列表收集更高效。
循环中修改列表
遍历时增删列表导致跳过/越界。遍历副本或重建列表。
内置名遮蔽
用内置名作变量遮蔽原函数。list/str/input/sum 别覆盖。
吞异常
裸 except 吞掉所有异常。至少记录或重新抛出。精确捕获具体类型。
全局变量误用
函数内赋值全局变量产生 Local 而非修改全局。需 global 声明。
拷贝与排序
sort 原地改列表,sorted 返回新列表。引用共享导致误改。
14.并发与异步
threading、asyncio、GIL 与并发的选择。
线程基础
threading.Thread 创建线程。start 启动、join 等待、daemon 守护。
线程类
继承 Thread 覆写 run。线程安全用锁。封装任务线程。
锁与同步
Lock 保护共享资源。with lock 自动释放。RLock 可重入。
GIL 与并行
GIL 让 CPython 线程不能真正并行 CPU 密集任务。I/O 密集线程有效。
多进程
multiprocessing 进程池并行 CPU 密集。ProcessPoolExecutor 封装。
asyncio 基础
async def 协程、await 挂起、asyncio.run 运行。事件循环调度。
async / await
async 定义协程。await 等待结果。并行 gather。超时 asyncio.timeout。
异步 I/O
aiohttp/httpx 异步请求。异步文件/流。IO 密集吞吐高。
执行器
ThreadPoolExecutor 线程池、ProcessPoolExecutor 进程池。统一 submit/map。
15.网络与模块
模块系统、HTTP 请求、URL 处理与服务器。
模块与导入
import 加载模块。from x import y 导入特定名字。包是含 __init__.py 的目录。
HTTP 请求
requests 库 GET/POST、参数、请求头、JSON。响应状态判断。
urllib 标准库
urllib.request 标准库请求(无第三方)。urllib.parse URL 解析。
简易 HTTP 服务
http.server 静态文件/临时服务。BaseHTTPRequestHandler 自定义。
Socket 网络
socket 底层 TCP/UDP。套接字连接、发送接收。抓包协议分析。
URL 与参数
urlparse 解析、urlencode 构造查询、quote 编码。路径拼接。
配置与环境
os.environ 环境变量、dotenv 加载 .env、配置分层。
API 调用模式
请求封装、重试、限流、错误处理。类型化响应(pydantic)。
16.时间与日期
datetime、格式化、时间差与时区。
datetime 基础
datetime 构造、date/time 子类、访问年月日、比较运算。
格式化与解析
strftime 格式输出、strptime 解析。%Y 年、%m 月、%d 日、%H 时。
时间差
timedelta 时间差计算。加减天数/小时。datediff 差值。
时区
timezone 偏移、zoneinfo 命名时区(3.9+)。存储 UTC 显示本地。
时间戳
timestamp 转 unix 秒、fromtimestamp 还原。时间戳比较存储。
定时与等待
time.sleep 等待、time.perf_counter 计时、schedule 定时任务。
日期实用
星期判断、月初月末、相对日期、日期范围。calendar 模块。
时间区间判断
判断时间在区间内、区间重叠、剩余时间。调度与限时任务常用。
17.进程与系统
subprocess、sys/os 模块、命令行参数与信号。
subprocess
subprocess.run 执行外部命令。捕获输出、检查返回码、超时。
sys 模块
sys.argv 参数、sys.exit 退出、sys.path 模块路径、标准流对象。
os 模块
os 环境、路径、目录操作。os.getcwd 当前目录、os.mkdir 建目录。
命令行参数解析
argparse 解析参数、帮助、默认值。命令式 CLI 工具。
退出码
0 成功,非 0 失败。脚本在 CI/管道中靠退出码判断。异常默认退出 1。
文件与进程
大文件处理、文件锁、临时文件、原子写入。
信号处理
signal 模块处理 Ctrl+C/SIGTERM。优雅关闭。POSIX 特性。
守护与后台
后台运行、日志轮转、进程守护。supervisor/systemd 托管。
18.正则与文本
re 模块匹配、搜索、替换、分组与编译。
match 与 search
re.match 从头匹配、re.search 全文搜索。返回 Match 对象或 None。
findall 与 finditer
findall 返回所有匹配列表。finditer 返回迭代器逐个处理。
sub 替换
re.sub 正则替换。替换串可用 \1 引用分组。函数式替换处理逻辑。
split 分割
re.split 按正则分割。多分隔符、保留分隔符、限制次数。
分组
() 捕获分组、(?P<name>) 命名组、(?:) 非捕获、| 或。
标志
re.I 忽略大小写、re.M 多行、re.S 点匹配换行、re.X 详细模式。
常用模式
邮箱/手机号/URL/IP/中文等常用正则片段。校验业务格式。
正则性能
预编译、避免灾难性回溯、限定宽度。大文本分块处理。
19.构建与工程化
依赖管理、虚拟环境、测试、Lint 与 CI。
requirements.txt
固定依赖版本。pip freeze 导出、pip install -r 安装。锁定保证可复现。
venv 实践
虚拟环境最佳实践:每项目一个、不提交 .venv、激活时机。
现代包管理
uv 极速依赖管理、poetry 依赖与打包。锁文件保证可复现。
pytest 测试
test_ 前缀函数断言。fixture 共享、parametrize 参数化、断言报错清晰。
unittest 标准库
标准库测试框架。TestCase 类 + assert 方法。setUp/tearDown 生命周期。
Lint 与格式化
ruff 静态检查与格式化、black 风格。代码规范统一。
打包与发布
pyproject 打包配置、构建 sdist/wheel、发布 PyPI。
CI 与部署
CI 阶段:lint、类型检查、测试、构建。GitHub Actions 配置。
关于本速查
本页是 Python 3.11 的自包含速查手册,覆盖语言核心与标准库在真实项目中约 80% 的常见用法。内容偏向现代惯用法:f-string、列表推导式、生成器、上下文管理器、类型注解、数据类(dataclass),以及标准库中 collections、itertools、pathlib 等实用模块。Python 由 Guido van Rossum 于 1991 年发布,以简洁可读的语法与「内置电池」的标准库著称,是数据分析、机器学习、自动化脚本与 Web 开发(Django/FastAPI)的流行选择。 19 个章节各自聚焦一个主题:基础语法、变量、类型与引用语义、控制流、函数、字符串、列表与字典、内存与引用计数、类与面向对象、异常处理、输入输出、常见误区、并发(线程/异步)、网络、时间、进程、正则与构建工具(pip/venv)。每个小节都配有「概念介绍 + 可直接复制的代码片段」。 所有代码与文字均在浏览器本地渲染,无任何数据离开你的设备。权威参考见 Python 官方文档。
版本 2.1.0