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