Une formation de trois jours axée sur les fonctionnalités Python modernes et la programmation asynchrone. Apprenez à exploiter les annotations de type, les outils modernes et asyncio pour construire des applications haute performance.

Durée 3 jours (21 heures)
Format 50 pour cent présentation, 50 pour cent exercices
Prérequis Solides fondamentaux Python requis
Supports Machines virtuelles fournies, supports de cours électroniques

Jour 1 — Essentiels du Python moderne

Annotations de type et syntaxe moderne

  • Annotations de type : types de base, Optional, Union, génériques
  • Le module typing : TypeVar, Protocol, TypeAlias, ParamSpec
  • Dataclasses : champs, post_init, frozen, slots
  • Protocoles et sous-typage structurel
  • Pattern matching structurel : instructions match/case, gardes, patterns

Outillage moderne

  • uv : gestion rapide des paquets et des environnements virtuels
  • ruff : linting et formatage ultra-rapides
  • mypy : vérification statique de types en pratique
  • pytest : patterns de tests modernes et fixtures
  • Bonnes pratiques pour les environnements virtuels et la gestion des dépendances

Jour 2 — Fondamentaux de l'asynchrone

La boucle événementielle asyncio

  • Comprendre la boucle événementielle : comment asyncio fonctionne en interne
  • Coroutines : async def, await, création et exécution de coroutines
  • Tâches : création de tâches, collecte de résultats, annulation
  • Futures : objets awaitables de bas niveau, callbacks

ASGI et patterns asynchrones avancés

  • Concepts ASGI : le protocole, événements de cycle de vie, middleware
  • Gestionnaires de contexte asynchrones : async with, gestion des ressources
  • Itérateurs et générateurs asynchrones : async for, yield dans le code asynchrone
  • Gestion des erreurs en code asynchrone : groupes d'exceptions, groupes de tâches
  • Primitives de synchronisation : verrous, sémaphores, événements, files d'attente

Jour 3 — Applications asynchrones réelles

Bibliothèques asynchrones et intégration

  • Clients HTTP : aiohttp et httpx pour les requêtes concurrentes
  • Accès base de données asynchrone : asyncpg, aiosqlite, SQLAlchemy async
  • Files de messages et patterns événementiels

Performance et débogage

  • Profilage de performance : identifier les goulots d'étranglement dans le code asynchrone
  • Débogage d'applications asynchrones : pièges courants et solutions
  • Quand utiliser async vs threading vs multiprocessing

Exercices pratiques

  • Construction d'un web scraper asynchrone avec limitation de débit
  • Création d'un client API asynchrone avec logique de réessai
  • Intégration de code asynchrone avec des bibliothèques synchrones