Bases & algorithmique · 6 mondes · 18 étapes

Python avancé

Le langage lui-même : texte, compréhensions, objets, erreurs, modules.

Progression

0 %

0/18 étapes terminées

Avancé · 12 min de lecture

Python en projet réel

Environnements, types, tests et outillage

1Définition

Écrire du Python qui tient dans un projet suppose quatre choses au-delà du langage : un environnement isolé par projet, des annotations de type vérifiées par un outil, des tests automatisés, et un formateur qui met fin aux débats de style.

2Principes fondamentaux

01

Un environnement par projet

python -m venv .venv isole les dépendances. Sans lui, deux projets se disputent les versions de la même bibliothèque.

02

Les types documentent et vérifient

def moyenne(notes: list[float]) -> float: n'est pas contrôlé à l'exécution, mais un vérificateur (mypy, Pyright) attrape des erreurs avant la mise en production.

03

Les tests remplacent l'espoir

pytest exécute des fonctions test_* qui vérifient le comportement attendu, y compris les cas limites qu'on oublie de retester à la main.

04

Le style ne se discute pas

Un formateur automatique (Black, Ruff) applique PEP 8 sans débat et rend les différences de code lisibles.

3Exemples pratiques

Une fonction annotée et testée

Exemple
1def moyenne(notes: list[float]) -> float:2    if not notes:3        return 0.04    return sum(notes) / len(notes)5 6# test_moyenne.py, exécuté par pytest7def test_moyenne_normale():8    assert moyenne([10, 20]) == 159 10def test_moyenne_vide():11    assert moyenne([]) == 0.0

Deux tests de quatre lignes qui garantissent le comportement pour toujours, y compris après une réécriture.

Le cycle de travail

Exemple
1python -m venv .venv          # créer l'environnement2.venv\Scripts\activate        # l'activer (Windows)3pip install -r requirements.txt4ruff format .                  # formater5ruff check .                   # analyser6pytest                         # tester

Cinq commandes qui constituent le quotidien d'un projet Python, et ce que fera votre intégration continue.

4Erreurs courantes

Installer en global

À éviter

pip install pandas   # hors environnement

À faire

python -m venv .venv puis pip install pandas

Pourquoi : Les versions finissent par entrer en conflit entre projets, et le problème n'apparaît que sur une autre machine.

Croire que les annotations sont vérifiées

À éviter

def f(x: int) -> int: ...   # puis f("texte")

À faire

# faire tourner mypy ou Pyright dans l'intégration continue

Pourquoi : Python ne vérifie rien à l'exécution : sans outil, l'annotation n'est qu'un commentaire.

5Subtilités à connaître

  • ◆requirements.txt fige les versions ; les projets modernes utilisent pyproject.toml et un gestionnaire comme uv ou Poetry.
  • ◆Un test qui échoue rarement (dépendant de l'heure, du réseau, du hasard) coûte plus cher qu'il ne rapporte : rendre le code déterministe est un objectif de conception.
  • ◆Les f-strings acceptent = pour déboguer : print(f"{total=}") affiche « total=42 ».

6Techniques d'expert

Déboguer sans print

breakpoint() ouvre une console à l'endroit exact : on inspecte les variables au lieu de les deviner.

def moyenne(notes):    breakpoint()    return sum(notes) / len(notes)

Mémoïser en une ligne

functools.lru_cache remplace le dictionnaire de cache écrit à la main.

from functools import lru_cache @lru_cache(maxsize=None)def fib(n: int) -> int:    return n if n <= 1 else fib(n - 1) + fib(n - 2)

Des données immuables et gratuites

Une dataclass(frozen=True) fournit constructeur, égalité, affichage et immuabilité en quatre lignes.

from dataclasses import dataclass @dataclass(frozen=True)class Fiche:    nom: str    score: int = 0

7Sur le terrain

  • Les équipes exécutent formateur, analyseur et tests à chaque proposition de modification : ce qui n'est pas automatisé n'est pas appliqué.
  • La lisibilité domine les revues de code, parce que c'est elle qui coûte le plus cher sur la durée d'un projet.
  • La bibliothèque standard et quelques paquets éprouvés couvrent l'essentiel : la compétence rare est de savoir lequel appeler, pas de tout réécrire.

8Vérifie ta compréhension

Question 1/3

Score 0

À quoi sert un environnement virtuel ?

Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.