Communitygithub.com

AholicK/zh-book-skills

Pacote de habilidades para consulta rápida de sintaxe, parâmetros e uso da biblioteca padrão do Python, baseado no 'Manual de Memorização Python' (OCR).

O que é zh-book-skills?

Este pacote de habilidades serve como um guia de referência abrangente para a sintaxe introdutória do Python e o uso da biblioteca padrão, sendo especialmente útil para iniciantes que estão escrevendo ou lendo código Python. Ele cobre tópicos essenciais como estruturas de controle (if/while/for), slicing de sequências, operações com listas, tuplas, dicionários e conjuntos, manipulação de strings, formatação de saída, funções (incluindo lambda), classes e objetos, tratamento de exceções, módulos e pip, operações de arquivo, acesso a banco de dados, threads e processos, sockets, expressões regulares e construção de interfaces wxPython. O conteúdo é derivado de um OCR do 'Manual de Memorização Python', fornecendo 20 cartas de capacidade que correspondem ao livro, com anotações sobre áreas danificadas ou não cobertas pela fonte original. Este pacote não substitui práticas modernas de engenharia (como ambientes virtuais, anotações de tipo, gerenciadores de contexto 'with') nem fornece tutoriais completos de desenvolvimento para bibliotecas de terceiros. Ele é projetado para ser usado por assistentes de codificação como Claude Code, Cursor ou Codex, onde o agente pode consultar cartas de capacidade específicas com base na intenção do usuário, seguindo uma tabela de roteamento para fornecer respostas rápidas e precisas sobre a sintaxe e os parâmetros do Python.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Manual de Memorização Python — Ponto de Entrada para Todas as Capacidades do Livro

Quando Ativar e Não Ativar

Aplicável: Consultas e tarefas relacionadas ao domínio de capacidade deste livro (veja a coluna de intenção na tabela de roteamento abaixo). Não Aplicável:

  • Problemas não relacionados à sintaxe: design de arquitetura de programa, otimização de desempenho, normas de engenharia, revisão de código.
  • Práticas modernas de engenharia (não cobertas pelo livro): ambientes virtuais, arquivos requirements/travamento de dependências, anotações de tipo, gerenciadores de contexto with, depuradores e frameworks de teste, cadeias de exceção e exceções personalizadas.
  • Tutoriais completos de desenvolvimento para bibliotecas de terceiros (wxPython / Pygame / Flask / frameworks de scraping — no livro, há apenas uma tabela de correspondência de nomes e usos, sem programas executáveis).
  • Partes com diagramas faltantes na fonte original: tabela de funções de conversão de tipo de dados (NR-02), linha de assinatura de open() (NR-09), exemplo de chamada de connect() (NR-10), start/join de Thread/Process (NR-11), criação e import de socket (NR-12), funções de chamada re (NR-13), wx.App e loop principal (NR-14).

Princípios Centrais (Visão Geral Permanente — Para perguntas gerais, ler aqui já basta)

  1. O conhecimento do livro é organizado na tríade "forma sintática + explicação parâmetro por parâmetro + resultado de exemplo": lembre-se da forma e do calibre do valor padrão de cada parâmetro, e você conseguirá escrever a sintaxe correta.
  2. Estruturas de controle e loops têm apenas dois modos de condução — executar se a condição for verdadeira, reavaliar após a execução (while), ou extrair valores um a um de um objeto (for); break sai do loop, continue pula a iteração atual, else não pode aparecer sozinho.
  3. Listas, tuplas e strings compartilham o mesmo calibre de três parâmetros para slicing: inclui o início, não inclui o fim, e o slicing gera uma nova sequência (a sequência original permanece inalterada).
  4. Para ordenar, primeiro pergunte: "A ordem original ainda será usada?" Se sim, use sorted (não altera a lista original); se não, use sort (altera no local).
  5. Ações após um erro são divididas em três partes: try coloca o código que pode causar erro, except captura a exceção específica e a trata, finally coloca código que deve ser executado em qualquer situação; raise é para "não tratar neste nível", assert é para fixar uma premissa que você considera certa.
  6. Arquivos e bancos de dados seguem uma estrutura de duas camadas "primeiro obtém o objeto, depois chama o método": open obtém o objeto arquivo; connect obtém o objeto de conexão, e então cursor() obtém o objeto cursor — o SQL deve ser enviado ao cursor, e após a modificação, deve-se chamar commit.
  7. A fonte original foi danificada pelo OCR (tabelas comprimidas em coluna única, parênteses transformados em letra O, chaves transformadas em parênteses): as citações devem seguir exatamente o manuscrito original, sem preencher de volta qualquer item danificado com base no senso comum.

Roteamento de Capacidades (Leia esta tabela primeiro, carregue 1 carta de capacidade de acordo com a intenção)

Intenção do UsuárioLeia PrimeiroLeitura Complementar/Notas
Escrever lógica de ramificação "executa se a condição for atendida"; escolher entre while e for; saída antecipada de loop ou pular um elemento (break/continue); erro de sintaxe com else ou palavra reservada; diagnosticar por que um loop não funciona; fazer o programa perguntar repetidamente ou executar até que a condição não seja mais atendida (cenário 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
Extrair um trecho de uma sequência (primeiros elementos, um trecho do meio, elementos a cada N); fatiar uma substring; verificar se o resultado do slicing está com um elemento a mais ou a menos; confirmar se o slicing altera a lista/string original; entender quais elementos x[1:5:2] está pegandoreferences/capabilities/sequence-slicing.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/string-encoding-split-join.md
Contar quantas vezes um elemento aparece, ou em que posição ele está; adicionar os elementos de outra lista à lista atual; percorrer uma lista com índice; gerar uma lista ou tupla por intervalo, criar lista vazia; somar e depois adicionar mais uma 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 uma lista em ordem crescente ou decrescente; manter a ordem original após a ordenação; ordenar no local, sem criar novo objeto; ordenar por uma chave do elemento (ex.: ignorar maiúsculas/minúsculas); decidir se deve usar sort ou sortedreferences/capabilities/sort-vs-sorted.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/function-definition-and-call.md
Gerar uma nova lista em uma linha; mapear itens de uma lista para uma nova lista; filtrar elementos de uma lista que atendem a uma condição; converter uma compreensão de lista incompreensível de volta para um loopreferences/capabilities/list-comprehension.mdreferences/capabilities/list-and-tuple-operations.md, references/capabilities/control-flow-and-loops.md
Criar um dicionário e consultar por chave; deduplicar dados em um conjunto; percorrer um dicionário para obter pares chave-valor; determinar se um tipo pode ser usado como chave de dicionário ou elemento de conjunto; escolher del/pop/remove/clear para remover conteúdo de um conjuntoreferences/capabilities/dict-and-set-operations.mdreferences/capabilities/list-and-tuple-operations.md
Resolver problemas de codificação e inconsistência de encoding; dividir uma string em campos por um separador; concatenar várias strings em uma; tolerar caracteres ilegais durante codificação/decodificaçãoreferences/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
Inserir variáveis em uma frase de saída; controlar o número de casas decimais; escrever saída em formato de porcentagem; escrever saída em representação binária/hexadecimal; escolher entre % e format()references/capabilities/string-formatting.mdreferences/capabilities/string-encoding-split-join.md, references/capabilities/input-and-print.md
Determinar a ordem de avaliação e o resultado de uma expressão; reescrever atribuições compostas (+=, etc.) na forma expandida; confirmar se o resultado de uma expressão de comparação/lógica é True ou False; determinar quais partes de uma expressão condicional são avaliadas primeiro e se é necessário adicionar parêntesesreferences/capabilities/operator-precedence.mdreferences/capabilities/control-flow-and-loops.md
Fazer o programa receber entrada do teclado do usuário; escrever um texto de prompt para a entrada; usar print para exibir o resultado de uma variável ou expressão; montar o esqueleto mínimo de diálogo com o usuário usando input/print (condições e loops do esqueleto veja em 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 em uma função; definir parâmetros com valores padrão; fazer a função retornar um ou mais valores; usar lambda para escrever uma função pequena temporária; passar uma função onde um objeto função é esperado (ex.: parâmetro key para ordenação; preenchimento de target em cenários de concorrência veja 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 uma classe e criar instâncias; escrever métodos de instância e lidar com a posição de self; usar @property para fazer uma propriedade calculada; usar herança para reutilizar uma classe existente e sobrescrever métodosreferences/capabilities/class-and-objects.mdreferences/capabilities/function-definition-and-call.md, references/capabilities/gui-window-construction.md
Determinar se uma funcionalidade pertence à biblioteca padrão ou precisa de instalação de pacote; escrever declarações import / from...import (incluindo alias e wildcard *); instalar, visualizar e desinstalar módulos de terceiros; depurar ImportError / ModuleNotFoundErrorreferences/capabilities/module-import-and-pip.mdreferences/capabilities/database-access.md, references/capabilities/socket-communication.md
Quando o programa trava com erro, querer tratar de forma controlável; escrever a estrutura de três partes try...except...finally e determinar o que colocar em cada bloco; não tratar neste nível, relançar a exceção para o chamador; usar assert para expor premissas que o programa considera certas; localizar o erro pelo nome da exceção (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
Escrever conteúdo em um arquivo ou ler de um arquivo; não conseguir escrever após abrir o arquivo (padrão somente leitura); excluir ou renomear um arquivo; consultar metadados como tamanho do arquivo e data da última modificação; lidar com diferenças entre caminhos no mesmo diretório e caminhos completosreferences/capabilities/file-and-directory-operations.mdreferences/capabilities/exception-handling.md, references/capabilities/string-encoding-split-join.md
Armazenar dados em um banco de dados ou consultá-los; distinguir o que o objeto de conexão e o objeto cursor fazem; alterar dados mas a modificação não surtir efeito, suspeitar de falta de commit; recuperar resultados da consulta (próximo / quantidade especificada / todos); confirmar quais parâmetros connect() tem e determinar o nome do módulo driver de acordo com o tipo de banco de dados (instalação e import do driver veja module-import-and-pip)references/capabilities/database-access.mdreferences/capabilities/module-import-and-pip.md
Usar Process ou Thread para iniciar uma tarefa (escrever a chamada e os parâmetros, incluindo o que preencher em target/args/kwargs); confirmar se os parâmetros de construção de processo e thread são idênticos; entender o que mutex.acquire()/release() está fazendo; determinar o que acontece quando acquire(blocking=False) não consegue obter o lock; proteger dados compartilhados lidos/escritos por múltiplas entidades de execuçãoreferences/capabilities/process-and-thread.mdreferences/capabilities/function-definition-and-call.md
Escrever a ordem de chamada do servidor TCP, desde a vinculação até o recebimento de dados; confirmar qual valor preencher para o backlog de listen; explicar por que accept fica parado (espera bloqueante); determinar em qual etapa verificar a falha de conexão do cliente (socket.error); consultar o propósito de recv/send/sendall/recvfrom/sendtoreferences/capabilities/socket-communication.mdreferences/capabilities/module-import-and-pip.md
Construir um padrão de expressão regular; consultar o significado de metacaracteres (ponto, barra invertida w/s/d/b, ^, $); escolher um quantificador de repetição para uma determinada posição; selecionar flags como ignorar maiúsculas/minúsculas, multiline, DOTALL; determinar se ^ e $ correspondem a toda a string ou por linhareferences/capabilities/regex-construction.mdreferences/capabilities/string-encoding-split-join.md
Ler ou reescrever a construção de janelas e controles wxPython; consultar os parâmetros de wx.Frame e itens opcionais; definir style de somente leitura/senha para caixas de entrada; escolher a categoria de sizer para layout do controle; confirmar o que passar para parent da janela de topo e dos controlesreferences/capabilities/gui-window-construction.mdreferences/capabilities/class-and-objects.md

Consultas Não Relacionadas a Capacidades:

  • Nome do livro/autor/capítulo/visão geral do livro → references/overview.md
  • Explicação de termos → references/glossary.md
  • Consulta rápida de regras de decisão (quando não precisa de fundamentação do texto original) → references/cheatsheet.md
  • Índice completo de intenções e palavras-chave (para intenções não cobertas por esta tabela, consulte primeiro aqui) → references/capability-index.md

Regras de Carregamento

  • A cada tarefa, leia este arquivo primeiro, depois carregue 1 carta de capacidade de acordo com a tabela de roteamento; quando a tarefa claramente abranger vários domínios, carregue no máximo 2 cartas.
  • Para perguntas de visão geral/nome do livro, não carregue cartas de capacidade; responda usando os "Princípios Centrais" e overview.md.
  • Para intenções que não podem ser correspondidas nem pela tabela de roteamento nem pelo capability-index.md, informe claramente que estão fora do escopo deste livro, não force.

Limites e Critérios de Parada

  • Quando a pergunta exigir um "diagrama de montagem" não fornecido pela fonte original (veja o último item out_of_scope), pare a inferência e explique claramente "não coberto pelo livro", não complete ou invente uma sintaxe com base no senso comum.
  • Quando for necessário citar o mapeamento da tabela de funções de conversão de tipo de dados (NR-02, linha ord() com nome de função sobreposto pela linha seguinte), pare de citar a tabela e explique a localização do dano na fonte original.
  • Quando o usuário quiser citações textuais para materiais impressos, didáticos, etc., alerte que a fonte original é um manuscrito processado por OCR (NR-15: reconhecimento incorreto de símbolos, tabelas comprimidas em coluna única, mesclagem de linhas), e recomende primeiro obter uma fonte melhor e reexecutar a verificação das citações.

Habilidades Relacionadas