Plan du cours
Jour 1 — Fondements robustes de Python et outils
Fonctionnalités modernes et typage en Python
- Base du typage, génériques, Protocoles et TypeGuard
- Dataclasses, dataclasses figées (frozen) et aperçu d'attrs
- Matching de motifs (PEP 634+) et usage idiomatique
Qualité du code et outillage
- Formateurs et linters de code : black, isort, flake8, ruff
- Vérification statique des types avec MyPy et pyright
- Accroches pre-commit et flux de travail des développeurs
Gestion de projet et packaging
- Gestion des dépendances avec Poetry et environnements virtuels
- Structure des paquets, points d'entrée et meilleures pratiques de versioning
- Construction et publication des paquets sur PyPI et les registres privés
Jour 2 — Patterns de conception et pratiques architecturales
Patterns de conception en Python
- Patterns créateurs : Factory, Builder, Singleton (variantes Pythoniques)
- Patterns structurels : Adapter, Facade, Decorator, Proxy
- Patterns comportementaux : Strategy, Observer, Command
Principes architecturaux
- Application des principes SOLID aux bases de code Python
- Architecture Hexagonale/Propre et gestion des frontières
- Patterns d'injection de dépendances et gestion de la configuration
Modularité et réutilisation
- Conception du code de bibliothèque par rapport au code d'application
- APIs, interfaces stables et versioning sémantique
- Gestion de la configuration, des secrets et des paramètres spécifiques à l'environnement
Jour 3 — Concurrence, E/S asynchrones et performance
Concurrence et parallélisme
- Fondements du thread et implications du GIL
- Multiprocessing et pools de processus pour les tâches intensives en CPU
- Quand utiliser concurrent.futures par rapport à multiprocessing
Programmation asynchrone avec asyncio
- Patterns async/await, boucle d'événements et annulation
- Conception de bibliothèques asynchrones et interopérabilité avec le code synchrone
- Patterns liés à l'E/S, rétroaction (backpressure) et limitation de débit
Profilage et optimisation
- Outils de profilage : cProfile, pyinstrument, perf, memory_profiler
- Optimisation des chemins critiques et utilisation des extensions C/Numba si approprié
- Mesure de la latence, du débit et de l'utilisation des ressources
Jour 4 — Test, CI/CD, observabilité et déploiement
Stratégies de test et automatisation
- Tests unitaires et fixtures avec pytest ; organisation des tests
- Test basé sur les propriétés avec Hypothesis et test de contrat
- Mocking, monkeypatching et test du code asynchrone
CI/CD, release et supervision
- Intégration des tests et des gates de qualité dans GitHub Actions/GitLab CI
- Construction de conteneurs reproductibles avec Docker et builds multi-étapes
- Observabilité de l'application : journalisation structurée, métriques Prometheus et traçage
Sécurité, durcissement et bonnes pratiques
- Audit des dépendances, bases du SBOM et scan de vulnérabilités
- Pratiques de codage sécurisé pour la validation des entrées et la gestion des secrets
- Durcissement d'exécution : limites de ressources, droits utilisateur et sécurité des conteneurs
Projet de synthèse et révision
- Travail d'équipe en laboratoire : conception et implémentation d'un petit service utilisant les patterns du cours
- Test, vérification des types, packaging et pipeline CI pour le projet
- Révision finale, critique de code et plan d'amélioration actionnable
Résumé et prochaines étapes
Pré requis
- Expérience solide en programmation Python de niveau intermédiaire
- Familiarité avec la programmation orientée objet et les bases du test logiciel
- Expérience dans l'utilisation de la ligne de commande et de Git
Public cible
- Développeurs Python seniors
- Ingénieurs logiciels responsables de la qualité et de l'architecture du code Python
- Responsables techniques et ingénieurs MLOps/DevOps travaillant avec des bases de code Python
Nos clients témoignent (3)
tout était parfait
Florin Vrincianu
Formation - Python Programming Fundamentals
Traduction automatique
L'adaptation des exos à notre contexte et la prise en compte de notre demande
Amel Guetat - EURO-INFORMATION DEVELOPPEMENTS
Formation - Fraud Detection with Python and TensorFlow
Les exercices pratiques liés au contenu aident vraiment à mieux comprendre chaque sujet. De plus, le fait de commencer les cours par une leçon puis de continuer avec des exercices pratiques est une bonne méthode qui aide à relier le contenu de la leçon précédente.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Formation - Introduction to Data Science and AI using Python
Traduction automatique