Communitygithub.com

AholicK/zh-book-skills

當使用者撰寫或閱讀 Python 入門級語法與標準庫用法、看不懂報錯資訊,或需要一份「寫法 + 參數口徑」速查時呼叫此能力包。涵蓋分支與迴圈、序列切片、列表與元組等 20 個單元,並標註底本損毀位置與邊界。

zh-book-skills 是什麼?

此技能是基於《Python 背記手冊》(OCR 整理稿)的全書能力入口,專為 Python 初學者設計,覆蓋入門級語法與標準庫用法,包括分支與迴圈、序列切片、列表與元組、字典與集合、字串處理與格式化、運算子優先級、輸入輸出、函式與 lambda、類別與物件、例外處理、模組與 pip、檔案與目錄、資料庫存取、程序與執行緒、Socket、正則表達式與 wxPython 視窗建構等 20 個能力單元。它不適用於現代工程實務(如虛擬環境、型別註記、上下文管理器、測試框架)、第三方庫完整開發教學,以及書中因 OCR 損毀而缺失的內容(如函數表、特定程式碼片段)。技能根據使用者意圖,透過路由表動態載入對應的能力卡,並遵循嚴格的邊界規則:若問題超出書本範圍或涉及損毀部分,便會明確告知「本書未覆蓋」,不會憑常識補全。支援的平台為任何能執行 Python 的開發環境,如 Claude Code、Codon 等命令列工具。運作方式是先讀取本入口檔,再依據意圖載入 1 張(或最多 2 張)能力卡,並參考核心原則與概述、詞彙表等輔助文件回答問題。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/AholicK/zh-book-skills/tree/HEAD/python-quick-reference

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

《Python 背記手冊》 — 全書能力入口

觸發與不觸發

適用:與本書能力域相關的諮詢與任務(見下方路由表的意圖列)。 不適用:

  • 非語法類問題:程式架構設計、效能調校、工程規範、程式碼審查
  • 現代工程實務(本書未覆蓋):虛擬環境、requirements/依賴鎖定、型別註記、with 上下文管理器、除錯器與測試框架、例外鏈結與自訂例外
  • 第三方庫的完整開發教學(wxPython / Pygame / Flask / 爬蟲框架在書中只有名稱與用途對照表,沒有可執行程式)
  • 底本缺裝配圖的部分:資料型別轉換函數表(NR-02)、open() 簽名行(NR-09)、connect() 呼叫範例(NR-10)、Thread/Process 的 start/join(NR-11)、socket 建立與 import(NR-12)、re 呼叫函數(NR-13)、wx.App 與主迴圈(NR-14)

核心原則(常駐速覽,概覽類問題讀到這裡即可回答)

  1. 本書的知識按「語法形式 + 參數逐項說明 + 範例結果」三件套組織:記住形式與每一項參數的預設值口徑,就能寫出正確寫法。
  2. 分支與迴圈只有兩種驅動方式——條件為真就執行、執行完回判(while),或從物件裡逐個取值(for);break 跳出迴圈、continue 跳過本輪,else 不能單獨出現。
  3. 列表、元組、字串共用同一套切片三參數口徑:含起點、不含終點,且切片產生的是新序列(原序列不動)。
  4. 要排序先問一句「原順序還要不要用」:還要用就 sorted(不動原列表),不要用才 sort(就地改)。
  5. 出錯後的動作分三段:try 放可能出現錯誤的程式碼、except 捕獲指定例外並處理、finally 放任何情形都必須執行的程式碼;raise 用於「本層不處理」,assert 用於釘住自己以為必然成立的前提。
  6. 檔案與資料庫都是「先取物件、再調方法」的兩層結構:open 得到檔案物件;connect 得到連線物件、再由 cursor() 得到游標物件——SQL 要發給游標,改完要 commit。
  7. 底本在 OCR 中受損(表格壓成單列、圓括號變字母 O、花括號變圓括號):引用一律照抄原稿,不憑常識回填任何損毀條目。

能力路由(先讀本表,按意圖載入 1 張能力卡)

使用者意圖先讀補讀/備註
寫「滿足條件才執行」的分支邏輯;在 while 與 for 之間選型;迴圈提前退出或跳過某個元素(break / continue);else 或保留字報語法錯怎麼改;判斷一段迴圈程式碼為什麼跑不起來;讓程式反覆詢問或重複執行,直到條件不再滿足(while 的典型場景)references/capabilities/control-flow-and-loops.mdreferences/capabilities/operator-precedence.md、references/capabilities/input-and-print.md、references/capabilities/list-comprehension.md、references/capabilities/exception-handling.md
取出序列中的一段(前幾位、中間一段、每隔幾個取一個);截取字串的某一段;切片結果少一個或多一個,要核對邊界;確認切片會不會改掉原來的列表/字串;讀懂別人寫的 x[1:5:2] 取的是哪幾個元素references/capabilities/sequence-slicing.mdreferences/capabilities/list-and-tuple-operations.md、references/capabilities/string-encoding-split-join.md
統計某元素出現幾次、或它在第幾位;把另一個列表的元素併入當前列表;帶序號遍歷列表;按範圍生成列表或元組、建空列表;求和之後還要再加一個基數references/capabilities/list-and-tuple-operations.mdreferences/capabilities/sequence-slicing.md、references/capabilities/sort-vs-sorted.md、references/capabilities/list-comprehension.md、references/capabilities/dict-and-set-operations.md
把列表排成升序或降序;排序後還要保留原來的順序;就地排序、不產生新物件;按元素的某個鍵排序(如不區分大小寫);判斷一段程式碼該用 sort 還是 sortedreferences/capabilities/sort-vs-sorted.mdreferences/capabilities/list-and-tuple-operations.md、references/capabilities/function-definition-and-call.md
一行生成新列表;把列表逐項映射成新列表;從列表中篩出符合條件的元素;把看不懂的推導式還原成迴圈references/capabilities/list-comprehension.mdreferences/capabilities/list-and-tuple-operations.md、references/capabilities/control-flow-and-loops.md
建立字典並按鍵查表;把資料去重成集合;遍歷字典拿到鍵值對;判斷鍵或集合元素能不能用某個型別;選 del/pop/remove/clear 刪除集合內容references/capabilities/dict-and-set-operations.mdreferences/capabilities/list-and-tuple-operations.md
解決亂碼與編碼不一致;按分隔符把字串拆成欄位;把多個字串合併成一個;讓編解碼對非法字元容錯references/capabilities/string-encoding-split-join.mdreferences/capabilities/sequence-slicing.md、references/capabilities/file-and-directory-operations.md、references/capabilities/string-formatting.md、references/capabilities/regex-construction.md
把變數排進一句話輸出;控制小數位數;輸出百分比寫法;輸出二進位/十六進位表示;在 % 與 format() 之間選一個references/capabilities/string-formatting.mdreferences/capabilities/string-encoding-split-join.md、references/capabilities/input-and-print.md
判斷一條表達式的求值順序與結果;把複合賦值(+= 等)改寫成展開形式;確認比較 / 邏輯表達式的結果是 True 還是 False;判斷條件表達式裡哪些部分先算、要不要加括號references/capabilities/operator-precedence.mdreferences/capabilities/control-flow-and-loops.md
讓程式接收使用者的鍵盤輸入;給輸入寫一句提示文字;用 print 輸出變數或表達式的結果;用 input / print 搭出與使用者對話的最小骨架(骨架裡的條件與迴圈見 control-flow-and-loops)references/capabilities/input-and-print.mdreferences/capabilities/control-flow-and-loops.md、references/capabilities/string-formatting.md
把重複的程式碼封裝成函式;定義帶預設值的參數;讓函式返回一個值或多個值;用 lambda 寫一個臨時小函式;在需要函式物件處傳一個函式(如排序的 key 參數;並發場景的 target 填寫見 process-and-thread)references/capabilities/function-definition-and-call.mdreferences/capabilities/sort-vs-sorted.md、references/capabilities/exception-handling.md、references/capabilities/class-and-objects.md、references/capabilities/process-and-thread.md
定義一個類別並建立實例;寫實例方法並處理 self 的位置;用 @property 做一個計算屬性;用繼承復用已有類別並重寫方法references/capabilities/class-and-objects.mdreferences/capabilities/function-definition-and-call.md、references/capabilities/gui-window-construction.md
判斷某個功能是否屬於標準庫、要不要裝套件;寫 import / from…import 敘述(含別名與 * 萬用字元);安裝、查看、卸載第三方模組;排查 ImportError / ModuleNotFoundErrorreferences/capabilities/module-import-and-pip.mdreferences/capabilities/database-access.md、references/capabilities/socket-communication.md
程式報錯就當機,想改成可控處理;寫 try…except…finally 三段式並確定各塊放什麼;本層不處理,把例外上拋給呼叫方;用 assert 暴露「程式以為必然成立」的假設;按例外名稱(NameError / KeyError / ZeroDivisionError 等)定位錯誤references/capabilities/exception-handling.mdreferences/capabilities/function-definition-and-call.md、references/capabilities/file-and-directory-operations.md、references/capabilities/control-flow-and-loops.md
把內容寫進檔案、或從檔案讀出來;開啟檔案後寫不進去(預設唯讀導致);刪除檔案或給檔案改名;查看檔案大小、最後修改時間等後設資料;處理同目錄與完整路徑的寫法差別references/capabilities/file-and-directory-operations.mdreferences/capabilities/exception-handling.md、references/capabilities/string-encoding-split-join.md
把資料存進資料庫或從資料庫查出來;分清連線物件與游標物件各做什麼;改資料後不生效,懷疑漏了提交;把查詢結果取回來(下一筆 / 指定數量 / 全部);確認 connect() 有哪些參數、按資料庫型別確定驅動模組名稱(驅動的安裝與 import 見 module-import-and-pip)references/capabilities/database-access.mdreferences/capabilities/module-import-and-pip.md
用 Process 或 Thread 起一個任務(寫呼叫與參數,含 target / args / kwargs 各填什麼);確認程序與執行緒的建構參數是否一致;看懂 mutex.acquire()/release() 在做什麼;判斷 acquire(blocking=False) 拿不到鎖時會怎樣;保護一段被多個執行體讀寫的共用資料references/capabilities/process-and-thread.mdreferences/capabilities/function-definition-and-call.md
寫出 TCP 伺服端從繫結到收資料的呼叫順序;確認 listen 的 backlog 該填幾;解釋 accept 為什麼停住不動(阻塞式等待);判斷用戶端連線失敗(socket.error)在哪一步檢查;查 recv/send/sendall/recvfrom/sendto 的用途references/capabilities/socket-communication.mdreferences/capabilities/module-import-and-pip.md
建構一條正則模式串;查元字元的含義(點、反斜線 w/s/d/b、^、$);為某個位置選擇重複次數限定符;選擇忽略大小寫/多行/跨行等旗標;判斷 ^ 與 $ 是按整串還是按行匹配references/capabilities/regex-construction.mdreferences/capabilities/string-encoding-split-join.md
讀懂或改寫 wxPython 視窗與控制項建構;查 wx.Frame 的參數與可省略項;給輸入框設定唯讀/密碼等 style;為控制項佈局選擇 sizer 類別;確認頂層視窗與控制項的 parent 分別傳什麼references/capabilities/gui-window-construction.mdreferences/capabilities/class-and-objects.md

非能力類查詢:

  • 書名/作者/章節/整書概覽 → references/overview.md
  • 術語解釋 → references/glossary.md
  • 決策規則速查(不需要原文依據時) → references/cheatsheet.md
  • 完整意圖與關鍵字索引(本表未覆蓋的意圖先查這裡) → references/capability-index.md

載入規則

  • 每次任務先讀本檔案,再按路由表載入 1 張能力卡;任務明確跨域時最多載入 2 張。
  • 概覽/書名類問題不載入能力卡,用「核心原則」與 overview.md 回答。
  • 路由表與 capability-index.md 都無法命中的意圖,明確告知超出本書範圍,不要硬套。

邊界與判停

  • 問題需要底本未給出的「裝配圖」時(見 out_of_scope 末條),停止推演並明確說明「本書未覆蓋」,不得憑常識補全或編造成書裡的寫法。
  • 需要引用資料型別轉換函數表的映射(NR-02,ord() 行函數名被下一行頂掉)時,停止引用該表並說明底本損毀位置。
  • 使用者要做印刷品、教學材料等逐字引用時,提醒底本為 OCR 整理稿(NR-15:符號誤識、表格壓單列、跨行串接),應先換更好底本並重跑引文核驗。

相關技能