Fiche de révision : Python Tips et Astuces

Plan du Cours

  1. Affichage et manipulation de données
  2. Dates, nombres et collections
  3. Chaînes et sélection d’éléments
  4. Inspection et interaction avec Python
  5. Itération et fonctions avancées
  6. Classes, fichiers et compréhensions
  7. Fonctions et traitements itératifs
  8. Structures de données pandas
  9. Fichiers et documents PDF
  10. Mesure et présentation des résultats
  11. Chaînes, conversions et entrées
  12. Collections et automatisation
  13. Automatisation des images et fichiers
  14. Fonctions et structures de données
  15. Classes et génération de données
  16. Calculs numériques et ressources système
  17. Chaînes et limites d’exécution
  18. Texte et prédicats sur listes

1. Affichage et manipulation de données

★ À maîtriser

  • Pour imprimer les éléments d’un itérable horizontalement, il faut remplacer le séparateur de fin par une chaîne vide avec print(element, end=" "), car end="\n" est utilisé par défaut.

  • Deux dictionnaires peuvent être fusionnés avec l’opérateur | ou avec la syntaxe {**dictionnaire1, **dictionnaire2}.

  • Deux variables peuvent être échangées directement avec l’affectation multiple x, y = y, x ou en trois étapes avec l’opérateur XOR.

📌 La méthode sort(**reverse=True**) trie une liste existante dans l’ordre décroissant et renvoie None.

Compléments

📌 La méthode sort() ne peut trier que des éléments comparables du même type et ne s’applique pas directement aux ensembles, tuples, chaînes ou dictionnaires.

  • Le paramètre sep de print() définit le séparateur entre les arguments affichés, par exemple sep='/' transforme 12, 12, 1990 en 12/12/1990.

Astuce mémo

sort() modifie la liste, sorted() crée une nouvelle liste

2. Dates, nombres et collections

Notions clés & Définitions

  • Valeur absolue : Se calcule avec abs() ; pour un nombre complexe, abs() renvoie sa magnitude.

★ À maîtriser

  • Le module intégré calendar permet d’afficher le calendrier d’un mois avec calendar.month(année, mois) et de vérifier une année bissextile avec calendar.isleap(année).

  • Le module datetime permet d’obtenir l’heure actuelle formatée avec datetime.now().strftime('%H:%M:%S'), tandis que date.today() renvoie la date du jour.

  • La classe Counter du module collections compte les occurrences des éléments d’un itérable et permet d’obtenir celle d’un élément avec .get().

  • Une liste imbriquée à deux dimensions peut être aplatie avec des boucles imbriquées, itertools.chain.from_iterable() ou une compréhension de liste.

  • Pour trouver l’indice du plus grand ou du plus petit nombre, il faut appliquer max() ou min() à enumerate(x) avec une clé lambda x: x[1], puis lire l’indice dans le premier élément du tuple obtenu.

Compléments

  • Les séparateurs de milliers peuvent être ajoutés à des nombres avec '{:,}'.format(num) ou avec une f-string utilisant f'{num:_}'.

Astuce mémo

compter, aplatir, indexer, mesurer

3. Chaînes et sélection d’éléments

★ À maîtriser

  • Le module heapq permet d’obtenir les cinq plus grandes valeurs avec **nlargest(5, iterable)** ou les cinq plus petites avec **nsmallest(5, iterable)**.

📌 startswith() renvoie True si une chaîne commence par une valeur donnée et endswith() renvoie True si elle se termine par cette valeur.

📌 Deux chaînes sont des anagrammes si leurs caractères triés sont identiques ou si leurs compteurs de caractères sont égaux.

Compléments

  • Le module speedtest mesure les débits descendant et montant, exprimés en bits puis divisés par **8000000** pour obtenir les résultats en mégaoctets selon l’exemple.

📌 La fonction max(chaîne, key=chaîne.count) renvoie le caractère le plus fréquent d’une chaîne ; en cas d’égalité, l’exemple indique que le caractère alphabétiquement premier est renvoyé.

4. Inspection et interaction avec Python

★ À maîtriser

  • La fonction dir() liste les propriétés et méthodes disponibles sur un objet ou un module, par exemple une chaîne ou le module collections.

  • Les mots-clés réservés de Python peuvent être affichés avec help('keywords') et ne peuvent pas être utilisés comme noms de variables.

Compléments

  • Le module intégré webbrowser ouvre une URL avec webbrowser.open(url), dans un nouvel onglet avec open_new_tab(url) ou dans une nouvelle fenêtre avec open_new(url).

  • Les clés d’un dictionnaire peuvent être obtenues avec une compréhension d’ensemble, set(dictionnaire) ou sorted(dictionnaire).

  • Pour comparer la consommation mémoire d’objets, sys.getsizeof() renvoie leur taille ; dans l’exemple, la liste vaut 88, l’ensemble 216 et le tuple 72.

Astuce mémo

inspecter l’objet → mieux contrôler le code

5. Itération et fonctions avancées

Points essentiels

  • Pour vérifier qu’un objet est itérable, il faut appeler iter(objet) et intercepter TypeError lorsqu’il ne l’est pas.

  • Une liste de tuples peut être triée avec sorted() et itemgetter() en choisissant l’indice du prénom, du nom, ou les indices (0, 1).

  • La fonction sorted() accepte une fonction lambda dans son paramètre key pour définir la clé de tri et trie par défaut dans l’ordre croissant.

  • enumerate(iterable, **start**) associe un compteur aux éléments d’un itérable et permet de créer une liste de tuples, avec un départ par défaut à zéro.

  • La fonction filter() reçoit une fonction et une séquence pour conserver les éléments qui satisfont le critère, par exemple les noms en minuscules avec lambda x: x.islower().

📌 L’instruction assert condition, message vérifie une condition et interrompt le programme avec une AssertionError si la condition est fausse.

Astuce mémo

énumérer → vérifier → filtrer

6. Classes, fichiers et compréhensions

★ À maîtriser

  • La fonction type() peut créer dynamiquement une classe en recevant son nom, ses bases et un dictionnaire contenant ses attributs et méthodes.

  • Une compréhension d’ensemble utilise des accolades, transforme les éléments d’un itérable et supprime les doublons car un ensemble ne les autorise pas.

📌 Une chaîne vide est évaluée comme False en Python ; l’opérateur not permet donc de tester sa vacuité avec if not chaîne.

📌 os.path.exists(chemin) renvoie un booléen indiquant si un fichier existe et permet d’éviter une erreur avant sa suppression.

📐 Formule — Une fonction utilisant *args peut accepter un nombre variable d’arguments positionnels et calculer leur moyenne avec moyenne=sum(args)len(args)\mathrm{moyenne}=\frac{\mathrm{sum}(args)}{\mathrm{len}(args)}.

Compléments

  • Une liste imbriquée à deux dimensions peut être aplatie avec sum(liste, []) ou avec reduce(lambda x, y: x+y, liste).

  • Le paramètre **kwargs permet à une fonction d’accepter un nombre variable d’arguments nommés, regroupés sous forme de dictionnaire de paires clé-valeur.

Astuce mémo

liste ordonnée, ensemble sans doublons

7. Fonctions et traitements itératifs

Notions clés & Définitions

  • *Arguments args : Permettent à une fonction d’accepter un nombre variable d’arguments positionnels.
  • **Arguments kwargs : Permettent à une fonction d’accepter un nombre variable d’arguments nommés sous forme de dictionnaire.
  • Fonction filter : La fonction filter() reçoit une fonction et une séquence afin de conserver les éléments qui satisfont le critère défini par cette fonction.

Points essentiels

📌 Une compréhension de liste produit tous ses éléments immédiatement, tandis qu’un générateur fournit un élément à la fois et utilise moins de mémoire.

📌 Une instruction return renvoie une valeur et termine la fonction, tandis qu’une instruction yield produit un générateur dont les valeurs peuvent être parcourues successivement.

Astuce mémo

return arrête, yield produit progressivement

8. Structures de données pandas

Notions clés & Définitions

  • Compréhension de dictionnaire : Transforme en une ligne un dictionnaire en un autre dictionnaire dont les valeurs peuvent être modifiées.

★ À maîtriser

  • Pour créer un DataFrame à partir de deux listes, il faut importer pandas, associer les listes avec zip(), puis transmettre les paires au constructeur DataFrame avec les colonnes et l’index souhaités.

📌 Dans pandas, l’affectation df['Age'] = [2, 4, 3] ajoute une colonne Age au DataFrame.

📌 La méthode df.drop('Models', inplace=True, axis=1) supprime la colonne Models du DataFrame original, car axis=1 désigne les colonnes et inplace=True applique directement la modification.

Compléments

📐 Formule — Une compréhension peut diviser chaque valeur du dictionnaire par deux selon la relation dict2={k:v/2 for (k,v) in dict1.items()}dict2 = \{k: v/2 \text{ for } (k,v) \text{ in } dict1.items()\}.

Astuce mémo

listes → DataFrame → ajout → suppression

9. Fichiers et documents PDF

★ À maîtriser

  • L’écriture d’une liste de noms dans un fichier CSV consiste à ouvrir le fichier en mode écriture, écrire chaque nom, puis écrire le caractère de nouvelle ligne \n après chaque nom.

  • Le module PyPDF2 permet de fusionner plusieurs PDF en créant un PdfFileMerger, en ajoutant chaque fichier avec append(), puis en écrivant et fermant le fichier fusionné.

Compléments

  • La bibliothèque pdf2docx convertit un PDF en document Word en créant un Converter, en appelant convert() avec le chemin du fichier cible, puis en fermant le convertisseur.

  • PyPDF2 extrait le texte d’une page PDF en ouvrant le fichier en mode binaire, en créant un PdfFileReader, en sélectionnant une page avec getPage() et en appelant extractText().

  • La bibliothèque python-barcode génère un code-barres ISBN13 à partir d’une chaîne de 12 chiffres, puis l’enregistre comme image PNG avec ImageWriter.

Astuce mémo

écrire → fusionner → convertir → extraire

10. Mesure et présentation des résultats

Notions clés & Définitions

  • Décorateur : Ajoute une fonctionnalité à une fonction sans modifier son code, en exécutant cette fonction à l’intérieur d’une fonction interne comme inner().
  • Fonction d’ordre supérieur : Prend une autre fonction comme argument ou renvoie une autre fonction.

★ À maîtriser

📌 La fonction sorted() peut recevoir une fonction ou une lambda dans son paramètre key afin de déterminer la clé de tri des éléments.

Compléments

  • Le décorateur timer utilise time.perf_counter() pour mesurer la durée d’exécution d’une fonction.

  • Le temps d’exécution peut être mesuré avec timeit.timeit(stmt=code, number=1000), où stmt est une chaîne contenant le code et number le nombre d’exécutions.

11. Chaînes, conversions et entrées

★ À maîtriser

  • Pour lire plusieurs entrées sur une même ligne, input().split() sépare la saisie selon les espaces par défaut ou selon le séparateur fourni avec sep.

📌 L’opérateur in renvoie True lorsqu’une sous-chaîne appartient à une chaîne, tandis que not in teste son absence.

  • La méthode find() renvoie l’indice auquel commence une sous-chaîne dans une chaîne, comme l’indice 12 pour « something » dans l’exemple.

📌 Les données bytes peuvent être converties en chaîne avec str(s, 'UTF-8') ou avec la méthode s.decode().

Compléments

📐 Formule — La moyenne de trois nombres saisis est calculée par moyenne=a+b+c3\text{moyenne} = \frac{a+b+c}{3}.

12. Collections et automatisation

Notions clés & Définitions

  • Itérateur : Un itérateur est un objet dont les éléments sont accessibles un par un avec next(), et l’appel suivant après le dernier élément provoque une erreur StopIteration.
  • Deque : File à double extrémité qui permet d’ajouter et de retirer des éléments à gauche comme à droite.
  • ChainMap : Regroupe plusieurs dictionnaires dans une unité unique et permet d’accéder à leurs clés et valeurs.

★ À maîtriser

📌 zip() associe les éléments de deux itérables par position et dict() transforme les paires obtenues en dictionnaire; les éléments sans paire correspondante sont ignorés.

Compléments

  • La bibliothèque tqdm affiche une barre de progression autour d’une boucle, notamment avec tqdm(range(100000)) et une description optionnelle passée avec desc.

13. Automatisation des images et fichiers

★ À maîtriser

  • Pour prendre une capture d’écran, pyautogui.screenshot() crée l’image, image.save() l’enregistre, puis cv.cvtColor(np.array(image), cv.COLOR_RGB2BGR) la convertit du format RGB vers BGR pour OpenCV.

  • Un filigrane peut être ajouté à une image avec Pillow en ouvrant l’image, en créant un objet ImageDraw, en choisissant une police et une position, puis en dessinant et en sauvegardant le texte.

  • Le module intégré zipfile extrait une archive avec ZipFile('file.zip', 'r'), printdir() pour afficher son contenu et extractall() pour extraire tous les fichiers, tandis que with ferme automatiquement l’archive.

Compléments

  • Avec pytube, une vidéo YouTube est téléchargée en créant un objet YouTube, en filtrant un flux MP4 à la résolution 360p, puis en appelant download() avec le chemin de destination.

Astuce mémo

Créer → convertir → afficher → sauvegarder

14. Fonctions et structures de données

Points essentiels

  • La fonction zip() associe les éléments de même index provenant de plusieurs séquences afin de permettre leur parcours simultané dans une boucle.

  • La combinaison de split(), map() et list() transforme une chaîne en liste de mots, tandis que join() combiné à map() reconstruit une chaîne à partir d’une liste de chaînes.

  • Une fonction Python qui exécute return 1, 2, 3 renvoie un tuple contenant les trois valeurs, et l’affectation x, y, z = values() permet ensuite de les récupérer séparément.

📌 append() ajoute une liste entière comme un seul élément, tandis que extend() ajoute individuellement les éléments de cette liste à la liste cible.

Astuce mémo

append regroupe, extend déploie

15. Classes et génération de données

Notions clés & Définitions

  • slots : slots définit les attributs autorisés pour les instances d’une classe et réduit l’espace mémoire occupé par ses objets.

★ À maîtriser

  • La bibliothèque Faker génère des données fictives avec un objet Faker(), notamment des pays via fake.country() et des profils via fake.simple_profile().

Compléments

  • La fonction more_itertools.collapse() aplatit une liste imbriquée ou une liste de tuples en une liste contenant successivement tous les éléments internes.

  • Dans l’exemple fourni, la taille affichée de la classe Cars passe de 1072 sans slots à 904 avec slots.

Astuce mémo

slots → moins de mémoire

16. Calculs numériques et ressources système

Notions clés & Définitions

  • Nombre premier : Entier qui possède exactement deux diviseurs : 1 et lui-même, et les nombres premiers commencent à 2.

★ À maîtriser

  • La bibliothèque psutil permet de mesurer la mémoire utilisée avec virtual_memory() et l’utilisation de chaque processeur avec cpu_percent(percpu=True), les octets de mémoire étant convertis en gigaoctets par une division par 1024**3.

📐 Formule — La factorielle d’un entier positif n est le produit de tous les entiers de 1 à n, soit n!=1×2×⋯×nn! = 1 \times 2 \times \cdots \times n.

Compléments

  • La bibliothèque countryinfo fournit des informations sur un pays, comme ses provinces avec provinces() ou sa monnaie avec currencies().

17. Chaînes et limites d’exécution

Points essentiels

📌 La concaténation assemble les chaînes avec l’opérateur +, tandis que join() assemble les éléments d’un itérable avec un séparateur et peut être plus rapide pour plus de trois chaînes.

  • La limite de récursion par défaut de Python est 1000 et elle peut être modifiée avec sys.setrecursionlimit(), par exemple à 1200.

Astuce mémo

concaténation répétée ≠ join unique

18. Texte et prédicats sur listes

Notions clés & Définitions

  • Tableau monotone : Ordonné de manière croissante ou décroissante, avec égalité éventuellement conservée.

★ À maîtriser

  • TextBlob corrige les erreurs orthographiques avec TextBlob(n).correct() et peut former le pluriel d’un mot avec Word(...).pluralize().

  • Le module better_profanity peut censurer les mots interdits avec profanity.censor(), détecter leur présence avec contains_profanity() et charger une liste personnalisée avec load_censor_words().

  • Pour trouver les facteurs d’un nombre n, il faut tester chaque entier de 1 à n et retenir ceux pour lesquels le reste de la division n % i vaut zéro.

📌 La fonction all() renvoie True lorsque tous les éléments testés satisfont la condition, ce qui permet de vérifier qu’une liste contient des éléments identiques.

Compléments

  • Pour n = 8, la liste des facteurs obtenue par compréhension est [1,2,4,8][1, 2, 4, 8].

Tableaux de synthèse

Structures d’itération

NotionProductionMémoire
Compréhension de listeTous les éléments immédiatementPlus élevée
GénérateurUn élément à la foisPlus faible
returnUne valeur puis arrêtNon applicable
yieldValeurs successives dans un générateurProgressive

Teste tes connaissances

Teste tes connaissances sur Python Tips et Astuces avec 58 questions à choix multiples et corrections détaillées.

1. Quelle instruction permet d’afficher les éléments d’un itérable horizontalement sans ajouter de retour à la ligne après chaque élément ?

2. Quelle syntaxe permet de fusionner les dictionnaires `d1` et `d2` en Python moderne ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Python Tips et Astuces avec 89 flashcards interactives.

Comment imprimer les éléments d'un itérable horizontalement en Python ?

En utilisant print(element, end=" ") pour remplacer le séparateur de fin par une chaîne vide.

Quel est le rôle du paramètre sep dans print() ?

Il définit le séparateur entre les arguments affichés.

Comment fusionner deux dictionnaires en Python ?

Avec l'opérateur | ou la syntaxe {**dictionnaire1, **dictionnaire2}.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches