Communitygithub.com

AholicK/zh-book-skills

Python 入门语法与标准库速查能力包,覆盖《Python背记手册》全部 20 个单元,帮助用户快速查找分支循环、切片、列表、字典、文件、异常等基础知识点。

zh-book-skills とは?

这个技能包专门为需要快速查阅 Python 入门级语法与标准库用法的开发者设计。它基于《Python背记手册》的 OCR 整理稿,覆盖了从分支循环、序列切片、列表与元组、字典与集合,到字符串处理、运算符优先级、输入输出、函数与 lambda、类与对象、异常处理、模块与 pip、文件与目录、数据库访问、进程与线程、Socket 通信、正则表达式、wxPython 窗口构造等全部 20 个能力单元。该技能的核心组织方式是「语法形式 + 参数说明 + 示例结果」三件套,每张能力卡都标注了底本在 OCR 过程中的损毁位置以及明确不覆盖的边界。它特别适合初学者在遇到具体的语法问题或需要快速确认某种写法的参数口径时使用,但不适用于现代工程实践(如虚拟环境、类型注解、with 上下文管理器、测试框架)、第三方库的完整开发教程,以及需要底本缺失部分(如数据类型转换函数表、socket 创建语句等)的场合。用户可以通过技能提供的路由表,根据意图精确加载对应的能力卡,从而高效获取原文依据的答案。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

《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:符號誤識、表格壓單列、跨行串接),應先換更好底本並重新執行引文核驗。

関連スキル