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 deconnect()(NR-10),start/joinde Thread/Process (NR-11), criação e import de socket (NR-12), funções de chamadare(NR-13),wx.Appe loop principal (NR-14).
Princípios Centrais (Visão Geral Permanente — Para perguntas gerais, ler aqui já basta)
- 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.
- 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);
breaksai do loop,continuepula a iteração atual,elsenão pode aparecer sozinho. - 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).
- Para ordenar, primeiro pergunte: "A ordem original ainda será usada?" Se sim, use
sorted(não altera a lista original); se não, usesort(altera no local). - Ações após um erro são divididas em três partes:
trycoloca o código que pode causar erro,exceptcaptura a exceção específica e a trata,finallycoloca 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. - Arquivos e bancos de dados seguem uma estrutura de duas camadas "primeiro obtém o objeto, depois chama o método":
openobtém o objeto arquivo;connectobtém o objeto de conexão, e entãocursor()obtém o objeto cursor — o SQL deve ser enviado ao cursor, e após a modificação, deve-se chamarcommit. - 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ário | Leia Primeiro | Leitura 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.md | references/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á pegando | references/capabilities/sequence-slicing.md | references/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 base | references/capabilities/list-and-tuple-operations.md | references/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 sorted | references/capabilities/sort-vs-sorted.md | references/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 loop | references/capabilities/list-comprehension.md | references/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 conjunto | references/capabilities/dict-and-set-operations.md | references/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ção | references/capabilities/string-encoding-split-join.md | references/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.md | references/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ênteses | references/capabilities/operator-precedence.md | references/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.md | references/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.md | references/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étodos | references/capabilities/class-and-objects.md | references/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 / ModuleNotFoundError | references/capabilities/module-import-and-pip.md | references/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.md | references/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 completos | references/capabilities/file-and-directory-operations.md | references/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.md | references/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ção | references/capabilities/process-and-thread.md | references/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/sendto | references/capabilities/socket-communication.md | references/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 linha | references/capabilities/regex-construction.md | references/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 controles | references/capabilities/gui-window-construction.md | references/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.