Python 语法速查表 - Python 常用命令与方法大全
这套速查面向刚入门或经常在不同项目间切换的 Python 开发者,取其写脚本、处理文本与数据、做小自动化时最高频的语法点。与罗列一遍 API 的文档不同,这里按实际使用场景(环境、容器、文件 IO、异常)组织,照着写即可。看完本页,你应该能独立建好 venv 环境、用推导式精简循环、安全地读写文件与 JSON,并用 try/except 兜住运行错误。
典型使用场景
面向日常写脚本与做数据处理的 Python 开发者。本表把 Python 最该掌握的两块放在一起:工程侧的虚拟环境(venv + pip freeze,解决「我这儿能跑你那儿不行」)与语法侧的容器类型、推导式、文件 IO、异常处理。异常处理尤其值得细看——`with` 保证文件一定关闭、`finally` 保证清理一定执行,这两条能消掉大量线上偶发问题。
虚拟环境与包管理 8
python3 -m venv venvsource venv/bin/activatevenv\Scripts\activatedeactivatepip install packagepip install -r requirements.txtpip freeze > requirements.txtpip list数据类型 Data Types 7
list = [1, 2, 3]tuple = (1, 2, 3)dict = {"key": "value"}set = {1, 2, 3}str = "hello"type(obj)isinstance(obj, int)列表推导式 List Comprehension 5
[x*2 for x in range(10)][x for x in range(10) if x % 2 == 0]{x: x*2 for x in range(5)}{x for x in range(10) if x % 2 == 0}list(map(lambda x: x*2, [1,2,3]))文件操作 File I/O 8
with open("file.txt", "r") as f: content = f.read() lines = f.readlines()with open("file.txt", "w") as f: f.write("content")with open("file.txt", "a") as f:import json; json.load(f)json.dump(data, f, indent=2)异常处理 Exception 8
try: result = 10 / 0except ZeroDivisionError as e: print(f"Error: {e}")except Exception as e:else:finally:raise ValueError("msg")常用内置函数 Built-in 8
len(obj)range(start, stop, step)enumerate(iterable)zip(list1, list2)sorted(iterable, key=None, reverse=False)filter(func, iterable)map(func, iterable)any(iterable) / all(iterable)参数矩阵
| 参数 | 作用 | 示例 |
|---|---|---|
python3 -m venv venv | 创建独立虚拟环境,隔离系统包 | python3 -m venv venv |
source venv/bin/activate | 激活环境(前缀出现 (venv)) | source venv/bin/activate |
deactivate | 退出虚拟环境回到系统 Python | deactivate |
pip install -r | 按文件批量安装依赖 | pip install -r requirements.txt |
pip freeze | 导出精确版本供他人复现 | pip freeze > requirements.txt |
list / dict / set | 可变序列 / 键值对 / 无序去重 | dict = {"key": "value"} |
isinstance | 检查类型(含子类) | isinstance(obj, int) |
列表推导式 | 条件过滤 + 变换一步完成 | [x*2 for x in range(10)] |
字典推导式 | 直接由序列生成映射 | {x: x*2 for x in range(5)} |
with open(...) as f | 自动关闭文件,异常也安全 | with open("file.txt") as f: |
try/except/else/finally | 四个子句各司其职 | except ZeroDivisionError as e: |
enumerate / zip | 带索引遍历 / 多序列并行遍历 | enumerate(iterable) |
map / filter / any / all | 函数式变换与判定 | sorted(x, key=lambda v: v[1], reverse=True) |
易错点与避坑指南
现象明明装了库,import 仍然报 ModuleNotFoundError。
原因装到了另一个解释器或另一个虚拟环境。
处置python -m pip install 用同一个解释器装;确认已 source venv/bin/activate;用 which python 核对路径。
现象脚本跑到一半抛异常后文件没关闭,或下次运行报文件被占用。
原因用 f = open(...) 而未用 with,异常路径下 close 不会执行。
处置一律用 with open("file.txt") as f:,退出块时自动关闭。
现象except Exception 后程序静默继续,错误被彻底吞掉。
原因except 里只 print 不 re-raise,或写成了 pass。
处置只在能真正恢复时捕获;否则记录后 raise,或至少在日志里保留完整堆栈。
现象用 open(f, "w") 写文件后原文件内容全部丢失。
原因"w" 是覆盖模式,打开即清空。
处置追加用 "a";需要保护原文件时先备份或改用临时文件再替换。
现象range 用于取长度没问题,但在旧版本里变成了一份完整列表,占内存。
原因Python 2 中 range 直接构造列表,Python 3 才改为惰性迭代器。
处置Python 3 用 range 或 xrange 均可;确认项目解释器版本别混用。
现象字典取不存在的键直接抛 KeyError。
原因用 d[key] 访问而非 d.get(key)。
处置取可能缺失的键用 d.get(key, default);需要区分「键不存在」与「值为 None」时用 d.get(key) is None 配合 in 判断。
现象依赖装对了版本,同事却装不上或装出别的版本。
原因未提交 requirements.txt,或提交的是含本机私有源与路径的输出。
处置pip freeze > requirements.txt 后清理掉本地路径行再提交;CI 用 pip install -r 复现。
排障路径
1确认当前用的是哪个解释器
which python && python -V && python -m pip list三者一起看能立刻区分「装错环境」与「版本不匹配」。
2复现他人的依赖环境
python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt创建、激活、按文件安装三步是标准复现流程。
3确认某个库是否真的装上了
pip list排查依赖冲突时先看已装版本,再决定装哪个版本。
4安全地读文件并处理异常
with open("file.txt") as f: print(f.read())with 保证异常时也关闭;配合 try/except 处理 FileNotFoundError。
5统计并按值排序
sorted(data, key=lambda x: x[1], reverse=True)sorted 返回新列表不改动原对象;key 用下标或字典取值均可。
命令示例
一行生成递增整数序列
[x*2 for x in range(10)]range(stop) 是左闭右开,stopping 值不包含;要从 1 数到 10 请写 range(1, 11)。
输出
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
读取并写出 JSON 文件
import json
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
with open("out.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)ensure_ascii=False 才会保留中文可读,否则非 ASCII 字符会被写成 \uXXXX 转义;with 语句保证文件在出错或正常结束时都被正确关闭。
traceback 定位异常来源
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")先用精确的异常类型,等真正需要兜底时再用 except Exception 捕获,避免吞掉不该忽略的 KeyboardInterrupt。
输出
Error: division by zero
创建虚拟环境并安装依赖
python3 -m venv venv
source venv/bin/activate
pip install requests
pip freeze > requirements.txtWindows 下激活改用 venv\Scripts\activate;requirements.txt 应在每次添加依赖后重新导出保持一致。
输出
(venv) $
常见坑与注意事项
- 不要用全局 pip 乱装包:改用它人的 requirements.txt 或开源项目前先在 venv 里试,避免污染系统 Python 或和系统自带包冲突。
- range() 是半开区间(不含末值),写循环上界时最容易差一;从 1 起就写 range(1, n + 1)。
- 在 with 外裸用 open() 且忘了 close,或用 mode="w" 时没注意它会先清空文件——写入关键数据前先确认路径和模式。
- except Exception 兜底会同时吞掉 KeyboardInterrupt(Ctrl+C)等,别把所有错误都静默吃掉,至少记录或抛一部分。
提示
- 始终使用 with 语句操作文件,确保文件正确关闭,即使发生异常。
- 列表推导式比 for 循环更简洁高效,但复杂逻辑还是用普通循环更易读。
- Python 3 中 range() 返回的是迭代器,不是列表,节省内存。
常见问题
python 必须要用虚拟环境吗?
不是必须,但强烈建议。直接用 pip install 装到的包会写进全局 site-packages,多项目之间容易版本冲突。用 python -m venv .venv 建独立环境、激活后再装依赖,就能把依赖隔离在项目内。
python 里 == 和 is 有什么区别?
== 比较两个对象的值是否相等,is 比较两个变量是否指向同一个内存对象。对数字、字符串等小对象可能碰巧相同,但列表、字典等可变对象里 is 通常为 False,因此判内容相等用 ==,is 只用来判断是否同一对象或是否 None。
python 列表推导式和生成器表达式怎么选?
两者语法类似,生成器表达式只是把外层方括号换成圆括号。列表推导式立即生成整个列表、占内存,适合要反复遍历或切片的结果;生成器表达式按需惰性产出、省内存,适合只需单遍遍历海量数据或做 sum/min/max 聚合时。
python 里 with open() 为什么推荐,忘记关闭文件怎么办?
with open(path) as f 会在代码块结束时自动调用 f.close(),即使中途抛异常也会执行,避免文件句柄泄漏。若手写 open() 而不 close,文件可能被占用、缓冲区未刷入磁盘,因此应尽量用 with,需要手动管理时务必在 finally 中 close。
python 里应该捕获所有异常吗?
不建议裸用 except 吞掉一切异常,会掩盖真实错误、难以排查。应捕获具体的异常类型(如 ValueError、KeyError),或至少用 except Exception,并在处理后用 raise 或日志把错误暴露,让问题可定位。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。