Jour 1 â DĂ©couvrir le langage Python
Objectifs du jour :
- Ăcrire et exĂ©cuter un premier script
- Manipuler les types de base
- Gérer proprement les erreurs
Contenu :
- Le monde Python
- RÎle de l'interpréteur et différence script / module
- Installation Python et création d'un environnement virtuel
- Convention PEP 8 : pourquoi appliquer un style homogĂšne
- Types & séquences
- Nombres, chaĂźnes, listes, tuples : quand choisir l'un ou l'autre
- Immuable vs mutable : impact sur la mémoire et les performances
- Slicing : extraire rapidement des sous-listes ou sous-chaĂźnes
- Structures de contrĂŽle
- Brancher la logique avec if / elif / else
- Répéter des actions via « for » et « while »
- Compréhensions de liste : filtrer ou transformer en une seule ligne
- Gestion d'exceptions
- Bloc try / except / finally comme « air-bag » de sécurité
- Afficher un message d'erreur clair plutĂŽt qu'une trace illisible
- Introduction Ă datetime
Â
- Atelier pratique :
- Transformer un CSV en JSON via la ligne de commande, avec gestion d'erreurs si le fichier ou l'encodage est incorrect.
Â
Jour 2 â Passer Ă la programmation orientĂ©e Objet
Objectifs du jour :
- Créer des classes réutilisables
- Appliquer héritage et encapsulation
- Structurer un projet en paquets importables
Contenu :
- Classes & objets :
- Initialiser les attributs
- Attributs publics, protégés, privés : rÚgles de nommage
- Propriétés pour contrÎler l'accÚs en lecture/écriture
- Exceptions personnalisées
- Héritage & polymorphisme :
- Composition vs Héritage
- Partager du code commun via super()
- Surcharge de méthodes pour un comportement spécialisé
- Duck typing (souplesse Python)
- ABC : définir un contrat formel d'interface
- Modules & paquets :
- Organiser les fichiers dans des dossiers
- Imports relatifs pour éviter les chemins absolus volumineux
- Lancer un paquet en mode exécutable
- Patterns simples : factory, Singleton Ă la mode Python
- Gestion des dépendances :
- Installer une bibliothĂšque dans le bon environnement
- Geler les versions dans « requirements.txt » pour la reproductibilité
Â
- Atelier pratique :
- Modélisation d'un petit domaine (au choix) avec rappel UML de base
- Créer la hiérarchie de classes
- Sérialiser un objet en JSON puis le reconstituer depuis ce fichier.
Â
Jour 3 â Fonctions avancĂ©es, fichiers & Web
Objectifs :
- Exploiter fonctions de âpremiĂšre classeâ
- Lire / écrire des données locales
- Interroger une API Web
Contenu :
- Fonctions « citoyens de premiÚre classe » :
- Passer une fonction en paramÚtre (tri personnalisé, callbacks)
- Lambda & closure : écrire des fonctions anonymes d'une ligne
- Décorateurs simples : ajouter journalisation ou chronométrage
- Entrées / sorties & sérialisation :
- Chemins multiplateformes avec pathlib
- Lire / écrire des fichiers texte et binaires (JSON csv)
- Précaution de sécurité
- AccÚs Web simplifié :
- Envoyer une requĂȘte GET pour rĂ©cupĂ©rer un JSON public
- Uitliser requests.session pour réutiliser une connexion sur plusieurs appels
- Gérer le délai maximal (timeout) et les erreurs réseau
- Décoder la réponse et transformer en objets Python
Â
- Atelier pratique :
- Lire un CSV
- Convertir chaque ligne en objet Python
- Exporter en JSON et chronométrer l'opération via un décorateur.
Â
Jour 4 â Interface utilisateur et assurance-qualitĂ©
Objectifs du jour :
- Créer une interface graphique simple
- Mettre en place tests unitaires + couverture
- Découvrir l'apport d'un LLM pour générer des tests
Contenu :
- Interface graphique (Tkinter / PySimpleGUI) :
- Boucle d'évÚnements : « j'attends un clic et je réagis »
- Positionner les widgets avec grilles ou boĂźtes flexibles
- Séparer la logique (contrÎleur) de l'affichage (vue)
- Alternatives : streamlit, textual, PyWebIO
- Tests & lint :
- Créer une « check-list automatique »
- Mesurer ce qui n'est pas couvert avec coverage
- Maintenir un style uniforme grĂące au linter flake8 / ruff
- IA légÚre pour les tests :
- Générer un squelette de test via outil LLM
- Vérifier manuellement, corriger et compléter
- Mention RGPD / confidentialité & responsabilité de relecture
Â
- Atelier pratique :
- Exemple d'exercice Mini-calculatrice GUI
- Construire la fenĂȘtre et ses boutons
- Demander à l'IA un test d'addition, puis l'étendre pour gérer un cas d'erreur (division par zéro, champ vide)
Â
Jour 5 â Packaging, documentation et CI/CD
Objectifs du jour :
- Créer un package installable
- Générer documentation HTML
- Mettre en place une chaĂźne CI simple
Contenu :
- Packaging moderne :
- Déclarer nom, version, auteurs et dépendances
- Construire un fichier installable partout
- Différencier dépendances d'exécution et de développement
- Documentation & typage :
- Rédiger des docstrings format Google ou NumPy
- Générer un site HTML en quelques commandes
- Ajouter des annotations typing et détecter les incohérences avec mypy
- Intégration continue (CI/CD) :
- CrĂ©er un workflow GitHub / GitLab : lint â tests â build package
- Recevoir un retour immédiat pour éviter les régressions
- Publier le package sur un registre interne ou PyPI privé
Â
- Atelier pratique :
- Mettre en production locale
- Puis ajouter un pyproject.toml
- Générer la doc Sphinx, puis compléter un pipeline CI YAML (squelette fourni) pour lancer lint et les tests automatiquement
- Auditer une fonction Python : détection mauvaise pratique