Communitygithub.com

AholicK/zh-book-skills

Bietet ein Fähigkeitenpaket für Python-Einsteiger, das grundlegende Syntax, Standardbibliotheksnutzung, Fehlermeldungen und schnelle Nachschlagefunktionen zu Schreibweisen und Parameterbereichen abdeckt.

Was ist zh-book-skills?

Dieses Fähigkeitenpaket, basierend auf dem „Python-Memo-Handbuch“ (OCR-bereinigtes Manuskript, ohne Namensnennung), bietet 20 konkrete Fähigkeitseinheiten für Python-Anfänger. Es deckt grundlegende Konzepte ab wie Verzweigungen und Schleifen, Slicing von Sequenzen, Listen und Tupel, Dictionaries und Sets, String-Operationen, Formatierung, Operator-Priorität, Ein-/Ausgabe, Funktionen und Lambdas, Klassen und Objekte, Ausnahmebehandlung, Module und pip, Datei- und Verzeichnisoperationen, Datenbankzugriff, Prozesse und Threads, Sockets, reguläre Ausdrücke sowie wxPython-Fenstererstellung. Es ist speziell für Anfänger konzipiert, die Python-Syntax lernen oder Fehlermeldungen verstehen müssen. Das Paket arbeitet plattformunabhängig mit KI-Assistenten wie Claude Code oder anderen Agenten zusammen. Es liefert präzise Antworten mit Schreibmustern und Parameterdetails. Es eignet sich nicht für moderne Engineering-Praktiken, vollständige Tutorials zu Drittanbieter-Bibliotheken oder Anfragen, die fehlende Teile des Originalmanuskripts betreffen. Die Dokumentation markiert klar beschädigte OCR-Stellen und Grenzen des Handbuchs.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Das Python-Memo-Handbuch – Fähigkeitseinstieg für das gesamte Buch

Auslöser und Nicht-Auslöser

Geeignet: Anfragen und Aufgaben, die mit dem Fähigkeitsbereich dieses Buchs zusammenhängen (siehe Absichtsspalte der Routingtabelle unten). Nicht geeignet:

  • Nicht-syntaktische Probleme: Programmarchitektur, Performance-Optimierung, Engineering-Standards, Code-Reviews
  • Moderne Engineering-Praktiken (vom Buch nicht abgedeckt): virtuelle Umgebungen, requirements / Abhängigkeitssperren, Typannotationen, with-Kontextmanager, Debugger und Test-Frameworks, Ausnahmeketten und benutzerdefinierte Ausnahmen
  • Vollständige Entwicklungstutorials für Drittanbieter-Bibliotheken (wxPython / Pygame / Flask / Crawler-Frameworks – im Buch nur Namens- und Verwendungszweck-Tabellen, keine lauffähigen Programme)
  • Teile des Manuskripts mit fehlenden Aufbauzeichnungen: Tabelle der Typkonvertierungsfunktionen (NR-02), open()-Signaturzeile (NR-09), connect()-Aufrufbeispiel (NR-10), start/join von Thread/Process (NR-11), Socket-Erstellung und import (NR-12), re-Aufruffunktionen (NR-13), wx.App und Hauptschleife (NR-14)

Kernprinzipien (ständige Übersicht, Übersichtsfragen können hiermit beantwortet werden)

  1. Das Wissen des Buchs ist nach dem Dreiklang „Syntaxform + Parameterdetails + Beispielergebnis“ organisiert: Merkt man sich die Form und den Standardwert jedes Parameters, kann man die korrekte Schreibweise ableiten.
  2. Verzweigungen und Schleifen haben nur zwei Antriebsarten: Bedingung wahr → ausführen, ausgeführt → zurückprüfen (while), oder nacheinander Werte aus einem Objekt holen (for); break verlässt die Schleife, continue überspringt den aktuellen Durchlauf, else kann nicht allein stehen.
  3. Listen, Tupel, Strings teilen dasselbe Drei-Parameter-Muster für Slicing: inklusive Start, exklusive Ende, und Slicing erzeugt eine neue Sequenz (die ursprüngliche bleibt unverändert).
  4. Vor dem Sortieren sollte man fragen: „Wird die ursprüngliche Reihenfolge noch benötigt?“ – Wenn ja, sorted (originale Liste bleibt); wenn nein, sort (ändert die Liste direkt).
  5. Die Aktion nach einem Fehler ist in drei Abschnitte unterteilt: try enthält den möglicherweise fehlerhaften Code, except fängt die angegebene Ausnahme ab und verarbeitet sie, finally enthält Code, der in jedem Fall ausgeführt werden muss; raise wird verwendet, wenn die aktuelle Ebene nicht verarbeitet; assert für Annahmen, die als selbstverständlich gelten.
  6. Datei- und Datenbankoperationen folgen einer zweistufigen Struktur: „Objekt holen – Methode aufrufen“: open liefert ein Dateiobjekt; connect liefert ein Verbindungsobjekt, dann cursor() ein Cursor-Objekt – SQL wird an den Cursor gesendet, und nach Änderungen muss commit aufgerufen werden.
  7. Das Manuskript wurde durch OCR beschädigt (Tabellen in Einzelspalten gepresst, runde Klammern zu Buchstaben O, geschweifte zu runden): Zitate werden wörtlich aus dem Original übernommen, keine beschädigten Einträge werden durch gesunden Menschenverstand ergänzt.

Fähigkeitsrouting (Tabelle zuerst lesen, dann 1 Fähigkeitskarte entsprechend der Absicht laden)

BenutzerabsichtZuerst lesenErgänzung/Hinweis
Schreiben von branching-Logik „nur ausführen, wenn Bedingung erfüllt“; Auswahl zwischen while und for; vorzeitiges Beenden oder Überspringen eines Elements in der Schleife (break / continue); else- oder reserviertes Wort verursacht Syntaxfehler – wie beheben; Code einer Schleife analysieren, warum sie nicht läuft; Programm wiederholt nachfragen lassen, bis Bedingung nicht mehr erfüllt (typischer while-Anwendungsfall)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
Einen Teil einer Sequenz extrahieren (erste paar, mittlerer Abschnitt, jedes n-te); einen Teil eines Strings ausschneiden; Slicing-Ergebnis hat ein Element zu wenig oder zu viel – Grenzen prüfen; bestätigen, ob Slicing die ursprüngliche Liste/den String ändert; x[1:5:2] von anderen verstehen, welche Elemente es extrahiertreferences/capabilities/sequence-slicing.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/string-encoding-split-join.md
Häufigkeit eines Elements zählen oder dessen Position ermitteln; Elemente einer anderen Liste an die aktuelle anhängen; Liste mit Index durchlaufen; Liste oder Tupel nach Bereich erstellen, leere Liste erzeugen; Summe bilden und dann eine Basis addierenreferences/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
Liste aufsteigend oder absteigend sortieren; nach dem Sortieren die ursprüngliche Reihenfolge beibehalten; In-Place-Sortierung, kein neues Objekt; nach einem bestimmten Schlüssel sortieren (z. B. case-insensitive); entscheiden, ob Code sort oder sorted verwenden sollreferences/capabilities/sort-vs-sorted.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/function-definition-and-call.md
In einer Zeile eine neue Liste erzeugen; Listenelemente eins-zu-eins in eine neue Liste abbilden; Elemente aus einer Liste filtern, die eine Bedingung erfüllen; eine schwer verständliche List Comprehension in eine Schleife umwandelnreferences/capabilities/list-comprehension.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/control-flow-and-loops.md
Dictionary erstellen und nach Schlüssel abfragen; Daten in einem Set deduplizieren; Dictionary durchlaufen und Schlüssel-Wert-Paare abrufen; prüfen, ob ein Typ für Schlüssel oder Set-Elemente geeignet ist; del/pop/remove/clear zur Auswahl für das Löschen von Set-Inhaltenreferences/capabilities/dict-and-set-operations.mdreferences/capabilities/list-and-tuple-operations.md
Zeichenkodierungsprobleme und inkonsistente Kodierung beheben; String anhand eines Trennzeichens in Felder zerlegen; mehrere Strings zu einem zusammenfügen; Kodierung/Dekodierung tolerant gegenüber ungültigen Zeichen machenreferences/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
Variable in einen Satz ausgeben; Dezimalstellen kontrollieren; Prozentausgabe; Binär-/Hexadezimaldarstellung ausgeben; zwischen % und format() wählenreferences/capabilities/string-formatting.mdreferences/capabilities/string-encoding-split-join.md, references/capabilities/input-and-print.md
Auswertungsreihenfolge und Ergebnis eines Ausdrucks bestimmen; zusammengesetzte Zuweisungen (+= etc.) in erweiterte Form umschreiben; Ergebnis von Vergleichs-/Logikausdrücken als True oder False bestätigen; bestimmen, welche Teile eines Bedingungsausdrucks zuerst ausgewertet werden und ob Klammern nötig sindreferences/capabilities/operator-precedence.mdreferences/capabilities/control-flow-and-loops.md
Programm Tastatureingaben des Benutzers empfangen; einen Hinweistext für die Eingabe schreiben; mit print Variable oder Ausdrucksergebnis ausgeben; mit input/print ein minimales Dialoggerüst mit dem Benutzer aufbauen (Bedingungen und Schleifen siehe control-flow-and-loops)references/capabilities/input-and-print.mdreferences/capabilities/control-flow-and-loops.md, references/capabilities/string-formatting.md
Wiederholten Code in eine Funktion kapseln; Parameter mit Standardwerten definieren; Funktion einen oder mehrere Werte zurückgeben lassen; eine temporäre kleine Funktion mit lambda schreiben; an Stellen, die ein Funktionsobjekt erwarten, eine Funktion übergeben (z. B. key-Parameter bei sort; target bei nebenläufigen Szenarien siehe 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
Klasse definieren und Instanz erstellen; Instanzmethoden schreiben und self-Position behandeln; mit @property eine berechnete Eigenschaft erstellen; mit Vererbung vorhandene Klasse wiederverwenden und Methode überschreibenreferences/capabilities/class-and-objects.mdreferences/capabilities/function-definition-and-call.md, references/capabilities/gui-window-construction.md
Bestimmen, ob eine Funktion zur Standardbibliothek gehört oder ein Paket installiert werden muss; import / from…import-Anweisungen schreiben (inkl. Alias und *-Wildcard); Drittanbieter-Module installieren, anzeigen, deinstallieren; ImportError / ModuleNotFoundError behebenreferences/capabilities/module-import-and-pip.mdreferences/capabilities/database-access.md, references/capabilities/socket-communication.md
Programm stürzt bei Fehler ab – in kontrollierte Verarbeitung umwandeln; try…except…finally-Dreiteiler schreiben und bestimmen, was in jeden Block kommt; Ausnahme an die aufrufende Ebene weitergeben (raise); mit assert die Annahme offenlegen, dass etwas „selbstverständlich“ gilt; Fehler anhand des Ausnahmenamens (NameError / KeyError / ZeroDivisionError etc.) lokalisierenreferences/capabilities/exception-handling.mdreferences/capabilities/function-definition-and-call.md, references/capabilities/file-and-directory-operations.md, references/capabilities/control-flow-and-loops.md
Inhalt in Datei schreiben oder aus Datei lesen; nach Öffnen der Datei nicht schreibbar (Standard read-only); Datei löschen oder umbenennen; Metadaten wie Dateigröße, letzte Änderungszeit prüfen; Unterschied zwischen gleichem Verzeichnis und vollständigem Pfad behandelnreferences/capabilities/file-and-directory-operations.mdreferences/capabilities/exception-handling.md, references/capabilities/string-encoding-split-join.md
Daten in Datenbank speichern oder aus Datenbank abfragen; Verbindungsobjekt und Cursor-Objekt unterscheiden, wofür sie jeweils zuständig sind; Daten nach Änderung nicht wirksam – commit vermutet; Abfrageergebnisse abrufen (nächstes / bestimmte Anzahl / alle); connect()-Parameter bestätigen, Treibermodul je nach Datenbanktyp bestimmen (Installation und import des Treibers siehe module-import-and-pip)references/capabilities/database-access.mdreferences/capabilities/module-import-and-pip.md
Mit Process oder Thread eine Aufgabe starten (Aufruf und Parameter, einschließlich target / args / kwargs – was wohin); bestätigen, ob die Konstruktorparameter von Process und Thread identisch sind; verstehen, was mutex.acquire()/release() tut; bestimmen, was passiert, wenn acquire(blocking=False) das Lock nicht bekommt; gemeinsame Daten schützen, die von mehreren Ausführungseinheiten gelesen/beschrieben werdenreferences/capabilities/process-and-thread.mdreferences/capabilities/function-definition-and-call.md
Aufruffolge eines TCP-Servers von Bindung bis Datenempfang schreiben; backlog-Wert von listen bestätigen; erklären, warum accept blockiert (blockierendes Warten); Fehler bei Client-Verbindung (socket.error) in welchem Schritt prüfen; Verwendung von recv/send/sendall/recvfrom/sendto klärenreferences/capabilities/socket-communication.mdreferences/capabilities/module-import-and-pip.md
Ein reguläres Ausdrucksmuster konstruieren; Bedeutung von Metazeichen nachschlagen (Punkt, Backslash w/s/d/b, ^, $); Wiederholungsquantifizierer für eine bestimmte Position auswählen; Flags wie case-insensitive, multiline, dotall auswählen; prüfen, ob ^ und $ auf die gesamte Zeichenkette oder zeilenweise passenreferences/capabilities/regex-construction.mdreferences/capabilities/string-encoding-split-join.md
wxPython-Fenster und Steuerelementkonstruktion lesen oder umschreiben; Parameter von wx.Frame und weglassbare Optionen prüfen; style für Eingabefelder wie read-only/Passwort setzen; Sizer-Typ für Steuerelement-Layout auswählen; bestätigen, was parent für Top-Level-Fenster und Steuerelemente istreferences/capabilities/gui-window-construction.mdreferences/capabilities/class-and-objects.md

Nicht-Fähigkeitsanfragen:

  • Buchtitel/Autor/Kapitel/Gesamtübersicht → references/overview.md
  • Begriffserklärung → references/glossary.md
  • Entscheidungsregeln Schnellreferenz (wenn kein Manuskriptbezug nötig) → references/cheatsheet.md
  • Vollständiger Absichts- und Schlüsselwortindex (nicht in obiger Tabelle abgedeckte Absichten zuerst hier suchen) → references/capability-index.md

Laderegeln

  • Jede Aufgabe liest zuerst diese Datei, dann lädt sie gemäß Routingtabelle 1 Fähigkeitskarte; bei klar domänenübergreifenden Aufgaben maximal 2 Karten.
  • Übersichts-/Buchtitel-Fragen laden keine Fähigkeitskarten; sie werden mit den Kernprinzipien und overview.md beantwortet.
  • Absichten, die weder in der Routingtabelle noch in capability-index.md gefunden werden, werden explizit als außerhalb des Buchumfangs gemeldet, nicht erzwungen.

Grenzen und Abbruchkriterien

  • Wenn die Anfrage eine im Manuskript nicht vorhandene „Aufbauzeichnung“ erfordert (siehe letzter Punkt in out_of_scope), wird die Ableitung gestoppt und klar gesagt: „Vom Buch nicht abgedeckt“. Es darf nicht nach gesundem Menschenverstand ergänzt oder in die Schreibweise des Buchs hineinerfunden werden.
  • Wenn auf die Abbildung der Typkonvertierungsfunktionstabelle (NR-02, ord()-Zeile Funktionsname durch nächste Zeile überschrieben) verwiesen werden muss, wird das Zitieren der Tabelle gestoppt und die beschädigte Stelle im Manuskript angegeben.
  • Wenn der Benutzer ein wortwörtliches Zitat für Druckerzeugnisse, Lehrmaterialien etc. wünscht, wird darauf hingewiesen, dass das Manuskript eine OCR-Bereinigung ist (NR-15: Symbolfehlerkennung, Tabelle in Einzelspalten, zeilenübergreifende Verkettung). Es sollte zuerst eine bessere Vorlage gesucht und die Zitatprüfung erneut durchgeführt werden.

Verwandte Skills