Plan du cours
Jour 1 — Fondations Python Robustes et Outils
Fonctionnalités Python Modernes et Typage
- Les bases du typage, les génériques, les Protocols et TypeGuard
- Présentation des dataclasses, des dataclasses gelées et de attrs
- Correspondance de motifs (PEP 634+) et usage idiomatique
Qualité du code et outils
- Formateurs de code et linters : black, isort, flake8, ruff
- Vérification statique de type avec MyPy et pyright
- Hooks pre-commit et workflows de développement
Gestion de projet et packaging
- Gestion des dépendances avec Poetry et les environnements virtuels
- Structure des packages, points d'entrée et meilleures pratiques de versionning
- Construction et publication de packages sur PyPI et registres privés
Jour 2 — Modèles de Conception et Pratiques Architecturales
Modèles de Conception en Python
- Modèles créationnels : Factory, Builder, Singleton (variants pythoniques)
- Modèles structurels : Adapter, Facade, Decorator, Proxy
- Modèles comportementaux : Strategy, Observer, Command
Principes Architecturaux
- Principes SOLID appliqués aux bases de code Python
- Architecture Hexagonale/Clean Architecture et ses limites
- Injection de dépendance et gestion de configuration
Modularité et Réutilisation
- Conception de bibliothèques vs code applicatif
- APIs, interfaces stables et versionning sémantique
- Gestion de la configuration, des secrets et des paramètres spécifiques à l'environnement
Jour 3 — Concurrence, Async IO et Performance
Concurrence et Parallélisme
- Fondamentaux du threading et implications du GIL
- Multiprocessing et pools de processus pour les tâches liées au CPU
- Quand utiliser concurrent.futures vs multiprocessing
Programmation Asynchrone avec asyncio
- Patterns async/await, boucle d'événements et annulation
- Conception de bibliothèques asynchrones et interopérabilité avec du code synchrone
- Patterns liés à l'E/S, gestion de la contre-pression (backpressure) et limitation de débit
Profiling et Optimisation
- Outils de profiling : cProfile, pyinstrument, perf, memory_profiler
- Optimisation des chemins critiques et utilisation d'extensions C/Numba lorsque cela est approprié
- Mesure de la latence, du débit et de l'utilisation des ressources
Jour 4 — Tests, CI/CD, Observabilité et Déploiement
Stratégies de Tests et Automatisation
- Tests unitaires et fixtures avec pytest ; organisation des tests
- Tests basés sur les propriétés avec Hypothesis et tests de contrat
- Mocking, monkeypatching et test du code asynchrone
CI/CD, Release et Monitoring
- Intégration des tests et des critères de qualité dans GitHub Actions/GitLab CI
- Construction de conteneurs reproductibles avec Docker et les builds multi-étapes
- Observabilité des applications : logs structurés, métriques Prometheus et traçage
Sécurité, Sécurisation et Bonnes Pratiques
- Audit des dépendances, bases SBOM et analyse des vulnérabilités
- Pratiques de codage sécurisé pour la validation des entrées et la gestion des secrets
- Sécurisation au runtime : limites de ressources, droits utilisateurs et sécurité des conteneurs
Projet Intégrateur et Revue
- Lab en équipe : concevoir et implémenter un petit service en utilisant les patterns du cours
- Tests, contrôle de type, packaging et pipeline CI pour le projet
- Revue finale, critique du code et plan d'amélioration concret
Résumé et Prochaines Étapes
Pré requis
- Une solide expérience de la programmation Python de niveau intermédiaire
- Une familiarité avec la programmation orientée objet et les tests de base
- De l'expérience avec la ligne de commande et Git
Public cible
- Développeurs Python seniors
- Ingénieurs logiciels responsables de la qualité du code Python et de l'architecture
- Lead 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