《Python背记手册》 — Entrée de toutes les capacités du livre
Déclenchement et non-déclenchement
Applicable : Questions et tâches liées au domaine de compétence de ce livre (voir la colonne "Intention" du tableau de routage ci-dessous). Non applicable :
- Problèmes non syntaxiques : conception architecturale, optimisation des performances, normes d'ingénierie, revue de code.
- Pratiques d'ingénierie modernes (non couvertes par ce livre) : environnements virtuels, requirements/verrouillage des dépendances, annotations de type, gestionnaires de contexte with, débogueurs et frameworks de test, chaînes d'exceptions et exceptions personnalisées.
- Tutoriels complets sur les bibliothèques tierces (wxPython / Pygame / Flask / frameworks de scraping ne contiennent que des tableaux de noms et d'utilisations, pas de programmes exécutables).
- Parties du document source où les diagrammes d'assemblage manquent : table des fonctions de conversion de types de données (NR-02), signature de open() (NR-09), exemple d'appel de connect() (NR-10), start/join de Thread/Process (NR-11), création et import de socket (NR-12), fonctions d'appel de re (NR-13), wx.App et boucle principale (NR-14).
Principes fondamentaux (aperçu permanent, les questions de vue d'ensemble peuvent être répondues ici)
- Les connaissances du livre sont organisées selon le trio « forme syntaxique + explication détaillée des paramètres + résultat d'exemple » : en retenant la forme et les valeurs par défaut de chaque paramètre, on peut écrire une syntaxe correcte.
- Les branches et boucles n'ont que deux moteurs – exécuter si la condition est vraie, revenir à la condition après exécution (while), ou extraire les valeurs d'un objet une par une (for) ; break sort de la boucle, continue saute le tour en cours, et else ne peut pas apparaître seul.
- Les listes, tuples et chaînes partagent la même syntaxe de découpage à trois paramètres : inclut le début, exclut la fin, et le découpage génère une nouvelle séquence (la séquence d'origine reste inchangée).
- Pour trier, demandez d'abord « Est-ce que l'ordre d'origine est encore nécessaire ? » : si oui, utilisez sorted (ne modifie pas la liste originale) ; sinon, utilisez sort (modifie sur place).
- Les actions après une erreur se divisent en trois parties : try place le code susceptible d'erreur, except capture l'exception spécifiée et la traite, finally exécute le code qui doit s'exécuter dans tous les cas ; raise signifie « ne pas traiter à ce niveau », assert fixe une condition que l'on croit nécessairement vraie.
- Les fichiers et bases de données suivent une structure à deux niveaux « d'abord obtenir l'objet, puis appeler la méthode » : open donne un objet fichier ; connect donne un objet connexion, puis cursor() donne un objet curseur – SQL doit être envoyé au curseur, les modifications doivent être commit.
- Le document source a été endommagé lors de l'OCR (tableaux compressés en colonnes uniques, parenthèses devenues la lettre O, accolades devenues parenthèses) : référez-vous toujours à la reproduction exacte du manuscrit, ne remplissez pas les entrées endommagées avec le bon sens.
Routage des capacités (lire d'abord ce tableau, puis charger 1 fiche de capacité selon l'intention)
| Intention de l'utilisateur | Lire d'abord | Complément / Remarque |
|---|---|---|
| Écrire une logique de branche « exécuter si la condition est remplie » ; choisir entre while et for ; sortie anticipée ou saut d'un élément dans une boucle (break / continue) ; comment corriger une erreur de syntaxe due à else ; comprendre pourquoi une boucle ne fonctionne pas ; faire répéter une action à un programme jusqu'à ce qu'une condition ne soit plus remplie (scénario typique 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 |
| Extraire une partie d'une séquence (premiers éléments, segment du milieu, un élément sur deux) ; découper une chaîne de caractères ; vérifier que le résultat du découpage correspond à la limite attendue ; confirmer que le découpage ne modifie pas la liste/chaîne d'origine ; comprendre quels éléments sont extraits par x[1:5:2] | references/capabilities/sequence-slicing.md | references/capabilities/list-and-tuple-operations.md, references/capabilities/string-encoding-split-join.md |
| Compter combien de fois un élément apparaît, ou sa position ; fusionner une autre liste dans la liste courante ; parcourir une liste avec index ; générer une liste ou un tuple par plage, créer une liste vide ; additionner une valeur de base après la somme | 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 |
| Trier une liste dans l'ordre croissant ou décroissant ; conserver l'ordre d'origine après le tri ; trier sur place sans créer de nouvel objet ; trier selon une clé d'élément (par exemple, sans tenir compte de la casse) ; déterminer s'il faut utiliser sort ou sorted dans un code | references/capabilities/sort-vs-sorted.md | references/capabilities/list-and-tuple-operations.md, references/capabilities/function-definition-and-call.md |
| Générer une nouvelle liste en une ligne ; mapper les éléments d'une liste vers une nouvelle liste ; filtrer les éléments d'une liste selon une condition ; décomposer une compréhension de liste illisible en boucle | references/capabilities/list-comprehension.md | references/capabilities/list-and-tuple-operations.md, references/capabilities/control-flow-and-loops.md |
| Créer un dictionnaire et y accéder par clé ; dédupliquer des données en un ensemble ; parcourir un dictionnaire pour obtenir les paires clé-valeur ; déterminer si un type peut être utilisé pour une clé ou un élément d'ensemble ; choisir entre del/pop/remove/clear pour supprimer le contenu d'un ensemble | references/capabilities/dict-and-set-operations.md | references/capabilities/list-and-tuple-operations.md |
| Résoudre les problèmes d'encodage et d'incohérence ; diviser une chaîne en champs par un séparateur ; concaténer plusieurs chaînes en une seule ; tolérer les caractères illégaux lors de l'encodage/décodage | 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 |
| Intégrer des variables dans une phrase de sortie ; contrôler le nombre de décimales ; écrire un pourcentage ; écrire une représentation binaire/hexadécimale ; choisir entre % et format() | references/capabilities/string-formatting.md | references/capabilities/string-encoding-split-join.md, references/capabilities/input-and-print.md |
| Déterminer l'ordre d'évaluation et le résultat d'une expression ; réécrire une affectation composée (+=, etc.) sous forme développée ; confirmer si le résultat d'une expression de comparaison/logique est True ou False ; déterminer quelles parties d'une expression conditionnelle sont évaluées en premier, s'il faut ajouter des parenthèses | references/capabilities/operator-precedence.md | references/capabilities/control-flow-and-loops.md |
| Permettre au programme de recevoir une saisie clavier de l'utilisateur ; écrire un message d'invite pour la saisie ; utiliser print pour afficher une variable ou le résultat d'une expression ; construire une structure minimale de dialogue avec l'utilisateur avec input/print (les conditions et boucles de la structure sont dans control-flow-and-loops) | references/capabilities/input-and-print.md | references/capabilities/control-flow-and-loops.md, references/capabilities/string-formatting.md |
| Encapsuler du code répété dans une fonction ; définir un paramètre avec valeur par défaut ; faire retourner une ou plusieurs valeurs par une fonction ; écrire une petite fonction temporaire avec lambda ; passer une fonction là où un objet fonction est nécessaire (par exemple, le paramètre key du tri ; le paramètre target dans les scénarios concurrents voir 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 |
| Définir une classe et créer des instances ; écrire une méthode d'instance et gérer la position de self ; utiliser @property pour créer une propriété calculée ; utiliser l'héritage pour réutiliser une classe existante et en réécrire les méthodes | references/capabilities/class-and-objects.md | references/capabilities/function-definition-and-call.md, references/capabilities/gui-window-construction.md |
Déterminer si une fonctionnalité fait partie de la bibliothèque standard ou nécessite un package ; écrire une instruction import / from…import (y compris avec alias et * wildcard) ; installer, lister, désinstaller des modules tiers ; diagnostiquer une erreur ImportError / ModuleNotFoundError | references/capabilities/module-import-and-pip.md | references/capabilities/database-access.md, references/capabilities/socket-communication.md |
| Transformer une erreur qui fait planter le programme en gestion contrôlable ; écrire la structure try…except…finally en déterminant ce que chaque bloc contient ; ne pas traiter l'exception à ce niveau et la remonter à l'appelant ; utiliser assert pour révéler une hypothèse « que le programme croit nécessairement vraie » ; localiser l'erreur par son nom (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 |
| Écrire du contenu dans un fichier ou lire à partir d'un fichier ; ne pas pouvoir écrire après ouverture d'un fichier (par défaut en lecture seule) ; supprimer ou renommer un fichier ; consulter les métadonnées d'un fichier (taille, date de dernière modification, etc.) ; gérer la différence entre un chemin relatif et un chemin absolu | references/capabilities/file-and-directory-operations.md | references/capabilities/exception-handling.md, references/capabilities/string-encoding-split-join.md |
| Enregistrer des données dans une base de données ou les interroger ; distinguer les rôles de l'objet de connexion et de l'objet curseur ; ne pas voir les modifications après une mise à jour, soupçonner un défaut de commit ; récupérer les résultats d'une requête (suivant, nombre spécifié, tous) ; déterminer les paramètres de connect() et le nom du module pilote en fonction du type de base de données (l'installation et import du pilote voir module-import-and-pip) | references/capabilities/database-access.md | references/capabilities/module-import-and-pip.md |
| Lancer une tâche avec Process ou Thread (écrire l'appel et les paramètres, y compris ce que contiennent target / args / kwargs) ; confirmer que les paramètres de construction d'un processus et d'un thread sont identiques ; comprendre ce que fait mutex.acquire()/release() ; déterminer ce qui se passe quand acquire(blocking=False) ne peut pas obtenir le verrou ; protéger des données partagées lues/écrites par plusieurs exécutions | references/capabilities/process-and-thread.md | references/capabilities/function-definition-and-call.md |
| Écrire la séquence d'appel d'un serveur TCP, de la liaison à la réception de données ; déterminer la valeur de backlog de listen ; expliquer pourquoi accept reste bloqué (attente bloquante) ; diagnostiquer à quelle étape vérifier un échec de connexion client (socket.error) ; rechercher l'utilisation de recv/send/sendall/recvfrom/sendto | references/capabilities/socket-communication.md | references/capabilities/module-import-and-pip.md |
| Construire un motif d'expression régulière ; rechercher la signification des métacaractères (point, backslash w/s/d/b, ^, $) ; choisir un quantificateur de répétition pour une position donnée ; sélectionner les indicateurs (insensibilité à la casse, multiligne, etc.) ; déterminer si ^ et $ correspondent à toute la chaîne ou à une ligne | references/capabilities/regex-construction.md | references/capabilities/string-encoding-split-join.md |
| Lire ou réécrire la construction de fenêtres et de contrôles wxPython ; rechercher les paramètres de wx.Frame et les éléments optionnels ; définir un champ de saisie en lecture seule/mot de passe via le style ; choisir un type de sizer pour la disposition des contrôles ; déterminer ce qu'il faut passer comme parent pour une fenêtre de premier niveau et un contrôle | references/capabilities/gui-window-construction.md | references/capabilities/class-and-objects.md |
Requêtes non liées aux capacités :
- Titre du livre / auteur / chapitres / aperçu du livre entier → references/overview.md
- Explication des termes → references/glossary.md
- Aide-mémoire des règles de décision (lorsqu'aucune référence au texte original n'est nécessaire) → references/cheatsheet.md
- Index complet des intentions et mots-clés (pour les intentions non couvertes dans ce tableau, vérifiez d'abord ici) → references/capability-index.md
Règles de chargement
- À chaque tâche, lisez d'abord ce fichier, puis chargez 1 fiche de capacité selon le tableau de routage ; si la tâche couvre plusieurs domaines de manière explicite, chargez au maximum 2 fiches.
- Pour les questions d'aperçu/de titre du livre, ne chargez pas de fiche de capacité, répondez avec les « Principes fondamentaux » et overview.md.
- Si l'intention ne se trouve ni dans le tableau de routage ni dans capability-index.md, indiquez clairement qu'elle dépasse le cadre de ce livre, sans forcer.
Limites et arrêt
- Si la question nécessite des « diagrammes d'assemblage » non fournis par le document source (voir le dernier point de out_of_scope), arrêtez l'inférence et indiquez clairement « non couvert par ce livre », ne comblez pas les lacunes avec le bon sens et ne fabriquez pas de syntaxe comme si elle figurait dans le livre.
- Si une question nécessite de citer la table des fonctions de conversion de types de données (NR-02, le nom de la fonction de la ligne
ord()est remplacé par la ligne suivante), arrêtez de citer cette table et indiquez l'emplacement de l'endommagement du document source. - Si l'utilisateur souhaite des citations textuelles pour des supports imprimés ou pédagogiques, rappelez-lui que le document source est un brouillon OCR (NR-15 : symboles mal reconnus, tableaux compressés en colonnes uniques, chaînes de caractères sur plusieurs lignes), et qu'il conviendrait d'abord de trouver un document source de meilleure qualité et de relancer une vérification des citations.