Communitygithub.com

AholicK/zh-book-skills

Proporciona acceso a las 20 unidades de capacidad del manual de referencia de Python «Python背记手册», cubriendo sintaxis básica, biblioteca estándar y resolución de errores.

¿Qué es zh-book-skills?

Este skill es una implementación del libro de referencia de Python «Python背记手册» (OCR reconstruido, sin autoría original) que cubre las 20 unidades de capacidad: control de flujo y bucles, slicing de secuencias, operaciones con listas y tuplas, diccionarios y conjuntos, manipulación y formateo de cadenas, precedencia de operadores, entrada/salida, funciones y lambda, clases y objetos, manejo de excepciones, módulos y pip, archivos y directorios, acceso a bases de datos, procesos e hilos, comunicación por sockets, expresiones regulares y construcción de ventanas wxPython. Está diseñado para ser utilizado por asistentes de IA (como Claude Code, Cursor, Codex) cuando el usuario escribe o lee sintaxis básica de Python, encuentra errores de comprensión o necesita una referencia rápida de «escritura + parámetros». El skill organiza el conocimiento en tarjetas de capacidad individuales, cada una con la forma sintáctica, explicación parámetro por parámetro y resultados de ejemplo. Incluye notas sobre daños en el OCR original (tablas aplastadas a una columna, paréntesis convertidos en letras, llaves en paréntesis) y marca explícitamente los límites del libro (por ejemplo, prácticas modernas de ingeniería como entornos virtuales, anotaciones de tipo, gestores de contexto `with`, pruebas y depuración). El skill no es adecuado para: diseño arquitectónico de programas, optimización de rendimiento, revisiones de código, prácticas modernas de ingeniería (libros no cubiertos), tutoriales completos de bibliotecas de terceros (wxPython/Pygame/Flask) y partes faltantes del manuscrito original (tabla de conversión de tipos de datos, línea de firma de `open()`, ejemplos de `connect()`, `Thread/Process` start/join, creación de sockets, funciones de `re`, `wx.App` y bucle principal).

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

《Python背记手册》 — Punto de entrada para todas las capacidades del libro

Activación y desactivación

Aplicable: Consultas y tareas relacionadas con el dominio de capacidades de este libro (consulta la columna de intención en la tabla de enrutamiento a continuación). No aplicable:

  • Problemas que no sean de sintaxis: diseño arquitectónico de programas, optimización de rendimiento, normas de ingeniería, revisión de código.
  • Prácticas modernas de ingeniería (no cubiertas en el libro): entornos virtuales, requirements/restricción de dependencias, anotaciones de tipo, gestores de contexto with, depuradores y marcos de pruebas, cadenas de excepciones y excepciones personalizadas.
  • Tutoriales completos de bibliotecas de terceros (wxPython / Pygame / Flask / marcos de scraping solo tienen tablas de nombres y propósitos, sin programas ejecutables).
  • Partes del manuscrito faltantes: tabla de funciones de conversión de tipos de datos (NR-02), línea de firma de open() (NR-09), ejemplo de llamada connect() (NR-10), start/join de Thread/Process (NR-11), creación e importación de sockets (NR-12), funciones de re (NR-13), wx.App y bucle principal (NR-14).

Principios básicos (resumen permanente, las preguntas de visión general se pueden responder leyendo esto)

  1. El conocimiento del libro se organiza en el trío «forma sintáctica + explicación parámetro por parámetro + resultado del ejemplo»: recordando la forma y el alcance del valor predeterminado de cada parámetro, se puede escribir la sintaxis correcta.
  2. Las ramas y los bucles solo tienen dos modos de conducción: ejecutar si la condición es verdadera, volver a evaluar después de la ejecución (while), o tomar valores uno por uno de un objeto (for); break sale del bucle, continue salta la ronda actual, else no puede aparecer solo.
  3. Las listas, tuplas y cadenas comparten el mismo conjunto de tres parámetros para el slicing: incluye el inicio, excluye el final, y el slicing genera una nueva secuencia (la secuencia original no se modifica).
  4. Para ordenar, primero pregúntate «¿todavía necesito el orden original?»: si lo necesitas, usa sorted (no modifica la lista original); si no, usa sort (modifica in situ).
  5. Las acciones después de un error se dividen en tres partes: try coloca el código que puede tener errores, except captura la excepción especificada y la maneja, finally coloca el código que debe ejecutarse en cualquier caso; raise se usa para «no manejar en este nivel», assert se usa para fijar una premisa que se cree que es cierta.
  6. Los archivos y las bases de datos tienen una estructura de dos niveles «primero obtén el objeto, luego llama al método»: open obtiene el objeto archivo; connect obtiene el objeto de conexión, y luego cursor() obtiene el objeto cursor — el SQL debe enviarse al cursor, y después de modificar hay que hacer commit.
  7. El manuscrito está dañado en el OCR (tablas aplastadas a una columna, paréntesis convertidos en la letra O, llaves convertidas en paréntesis): las citas deben copiar el manuscrito original textualmente, no rellenar ninguna entrada dañada basándose en el sentido común.

Enrutamiento de capacidades (lee primero esta tabla, luego carga 1 tarjeta de capacidad según la intención)

Intención del usuarioLeer primeroLectura complementaria / Notas
Escribir lógica de rama «ejecutar si se cumple la condición»; elegir entre while y for; salir del bucle antes de tiempo o saltar un elemento (break / continue); corregir un error de sintaxis de else o palabra reservada; diagnosticar por qué un bucle no se ejecuta; hacer que el programa pregunte repetidamente o se repita hasta que la condición ya no se cumpla (escenario típico de 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
Tomar un segmento de una secuencia (primeros elementos, un segmento intermedio, tomar uno de cada varios); cortar una parte de una cadena; cuando falte o sobre un elemento en el resultado del slicing, verificar los límites; confirmar si el slicing modifica la lista/cadena original; entender qué elementos toma x[1:5:2] escrito por otrosreferences/capabilities/sequence-slicing.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/string-encoding-split-join.md
Contar cuántas veces aparece un elemento o en qué posición está; fusionar los elementos de otra lista en la lista actual; recorrer una lista con índice; generar una lista o tupla por rango, crear una lista vacía; sumar y luego añadir una basereferences/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
Ordenar una lista en orden ascendente o descendente; conservar el orden original después de ordenar; ordenar in situ, sin crear un nuevo objeto; ordenar por una clave de un elemento (por ejemplo, sin distinguir mayúsculas/minúsculas); decidir si usar sort o sorted en un fragmento de códigoreferences/capabilities/sort-vs-sorted.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/function-definition-and-call.md
Generar una nueva lista en una línea; mapear elementos de una lista a una nueva lista; filtrar elementos de una lista que cumplan una condición; convertir una comprensión de lista incomprensible en un buclereferences/capabilities/list-comprehension.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/control-flow-and-loops.md
Crear un diccionario y buscar por clave; deduplicar datos en un conjunto; recorrer un diccionario obteniendo pares clave-valor; determinar si una clave o elemento de conjunto puede usar un tipo determinado; elegir del/pop/remove/clear para eliminar contenido de un conjuntoreferences/capabilities/dict-and-set-operations.mdreferences/capabilities/list-and-tuple-operations.md
Resolver problemas de codificación y codificación inconsistente; dividir una cadena en campos por un separador; combinar múltiples cadenas en una; hacer que la codificación/descodificación sea tolerante a caracteres no válidosreferences/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
Insertar variables en una frase de salida; controlar el número de decimales; escribir un formato de porcentaje; escribir una representación binaria/hexadecimal; elegir entre % y format()references/capabilities/string-formatting.mdreferences/capabilities/string-encoding-split-join.md, references/capabilities/input-and-print.md
Determinar el orden de evaluación y el resultado de una expresión; expandir una asignación compuesta (+=, etc.) a su forma desarrollada; confirmar si el resultado de una expresión de comparación/lógica es True o False; decidir qué partes de una expresión condicional se evalúan primero y si se necesitan paréntesisreferences/capabilities/operator-precedence.mdreferences/capabilities/control-flow-and-loops.md
Hacer que el programa reciba la entrada del teclado del usuario; escribir un texto indicador para la entrada; usar print para mostrar el resultado de una variable o expresión; construir un esqueleto mínimo de diálogo con el usuario usando input/print (las condiciones y bucles del esqueleto consultar control-flow-and-loops)references/capabilities/input-and-print.mdreferences/capabilities/control-flow-and-loops.md, references/capabilities/string-formatting.md
Encapsular código repetitivo en una función; definir parámetros con valores predeterminados; hacer que una función devuelva uno o más valores; usar lambda para escribir una función pequeña y temporal; pasar una función como argumento donde se necesite un objeto de función (por ejemplo, el parámetro key de ordenación; el llenado de target en escenarios concurrentes consultar 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
Definir una clase y crear una instancia; escribir un método de instancia y manejar la posición de self; usar @property para hacer una propiedad calculada; usar herencia para reutilizar una clase existente y sobrescribir métodosreferences/capabilities/class-and-objects.mdreferences/capabilities/function-definition-and-call.md, references/capabilities/gui-window-construction.md
Determinar si una funcionalidad pertenece a la biblioteca estándar o si necesita instalarse con un paquete; escribir sentencias import/from...import (incluyendo alias y comodín *); instalar, ver y desinstalar módulos de terceros; diagnosticar ImportError/ModuleNotFoundErrorreferences/capabilities/module-import-and-pip.mdreferences/capabilities/database-access.md, references/capabilities/socket-communication.md
Cuando un programa se bloquea por un error, convertirlo en un manejo controlable; escribir la estructura de tres partes try...except...finally y determinar qué poner en cada bloque; no manejar en este nivel, lanzar la excepción hacia arriba al llamante; usar assert para exponer una suposición que el programa cree que es cierta; localizar el error por su nombre (NameError/KeyError/ZeroDivisionError, etc.)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
Escribir contenido en un archivo o leerlo de un archivo; cuando no se puede escribir después de abrir un archivo (por defecto solo lectura); eliminar un archivo o cambiarle el nombre; ver metadatos como el tamaño del archivo, la hora de la última modificación, etc.; manejar la diferencia entre la misma ruta de directorio y una ruta completareferences/capabilities/file-and-directory-operations.mdreferences/capabilities/exception-handling.md, references/capabilities/string-encoding-split-join.md
Almacenar datos en una base de datos o consultarlos desde ella; distinguir entre el objeto de conexión y el objeto cursor y qué hace cada uno; cuando los datos modificados no tienen efecto, sospechar que falta el commit; recuperar los resultados de la consulta (siguiente / cantidad especificada / todos); confirmar qué parámetros tiene connect() y determinar el nombre del módulo controlador según el tipo de base de datos (la instalación e importación del controlador consultar module-import-and-pip)references/capabilities/database-access.mdreferences/capabilities/module-import-and-pip.md
Usar Process o Thread para iniciar una tarea (escribir la llamada y los parámetros, incluyendo qué llenar en target/args/kwargs); confirmar si los parámetros de construcción del proceso y del hilo son consistentes; entender qué hace mutex.acquire()/release(); determinar qué sucede cuando acquire(blocking=False) no puede obtener el bloqueo; proteger datos compartidos leídos y escritos por múltiples ejecutoresreferences/capabilities/process-and-thread.mdreferences/capabilities/function-definition-and-call.md
Escribir la secuencia de llamadas del servidor TCP desde la vinculación hasta la recepción de datos; confirmar cuánto debe llenarse en backlog de listen; explicar por qué accept se detiene (espera bloqueante); diagnosticar en qué paso verificar el fallo de conexión del cliente (socket.error); consultar los usos de recv/send/sendall/recvfrom/sendtoreferences/capabilities/socket-communication.mdreferences/capabilities/module-import-and-pip.md
Construir un patrón de expresión regular; consultar el significado de los metacaracteres (punto, barra invertida w/s/d/b, ^, $); elegir cuantificador de repetición para una posición específica; elegir banderas de ignorar mayúsculas/minúsculas, multilínea, etc.; determinar si ^ y $ coinciden con toda la cadena o por líneareferences/capabilities/regex-construction.mdreferences/capabilities/string-encoding-split-join.md
Leer o reescribir la construcción de ventanas y controles wxPython; consultar los parámetros de wx.Frame y los elementos que se pueden omitir; configurar estilos como solo lectura/contraseña para un cuadro de entrada; elegir el tipo de sizer para el diseño de controles; confirmar qué pasar en parent para la ventana de nivel superior y los controles respectivamentereferences/capabilities/gui-window-construction.mdreferences/capabilities/class-and-objects.md

Consultas no relacionadas con capacidades:

  • Nombre del libro / autor / capítulos / resumen del libro completo → references/overview.md
  • Explicación de términos → references/glossary.md
  • Referencia rápida de reglas de decisión (cuando no se necesita la base textual original) → references/cheatsheet.md
  • Índice completo de intenciones y palabras clave (para intenciones no cubiertas en esta tabla, consulta primero aquí) → references/capability-index.md

Reglas de carga

  • Cada tarea debe leer primero este archivo, luego cargar 1 tarjeta de capacidad según la tabla de enrutamiento; cuando la tarea abarque claramente múltiples dominios, se pueden cargar como máximo 2 tarjetas.
  • Las preguntas de resumen / nombre del libro no cargan tarjetas de capacidad, se responden con los «Principios básicos» y overview.md.
  • Si la tabla de enrutamiento y capability-index.md no pueden hacer coincidir una intención, indique claramente que está fuera del alcance de este libro, no lo fuerce.

Límites y criterio de parada

  • Cuando el problema requiera un «diagrama de montaje» no proporcionado por el manuscrito (ver el último punto de out_of_scope), detenga la inferencia e indique claramente «no cubierto por el libro», no lo complete ni invente basándose en el sentido común.
  • Cuando sea necesario citar la tabla de funciones de conversión de tipos de datos (NR-02, el nombre de la función de la línea ord() está desplazado por la línea siguiente), deje de citar esa tabla e indique la ubicación del daño en el manuscrito.
  • Cuando el usuario quiera citar textualmente para impresos, materiales didácticos, etc., recuérdele que el manuscrito es un texto reconstruido por OCR (NR-15: identificación incorrecta de símbolos, tablas aplastadas a una columna, concatenación entre líneas), y que primero debe cambiarse por un manuscrito mejor y volver a ejecutar la verificación de las citas.

Skills relacionados