Fondamentaux Python
Une formation complète de cinq jours couvrant l'ensemble du langage Python, des premiers pas aux techniques avancées. Ce cours fournit une base solide pour tout développeur Python, que vous partiez de zéro ou que vous approfondissiez vos connaissances existantes.
Durée
5 jours (35 heures)
Format
50 pour cent présentation, 50 pour cent exercices
Prérequis
Connaissances de base en programmation recommandées
Supports
Machines virtuelles fournies, supports de cours électroniques
Jour 1 — Introduction et Initiation
Introduction
- Typologie des langages : langages compilés, interprétés, de script
- Présentation de Python : histoire, philosophie, versions
- Installation et configuration de l'environnement de développement
- L'interpréteur interactif et premiers scripts
Initiation
- Délimiteurs : indentation, retours à la ligne, commentaires
- Instructions : affectation, expressions, print
- Conditions : if, elif, else
- Itérations : while, for, range, enumerate, zip
- Exceptions : try, except, finally, raise
Jour 2 — Algorithmique basique et Fonctions
Algorithmique basique
- Variables : nommage, portée, affectation, affectation multiple
- Types : typage dynamique, vérification de type, conversion de type
- Chaînes de caractères : formatage, méthodes, découpage, encodage
- Nombres : entiers, flottants, complexes, décimaux, fractions
- Collections : listes, tuples, dictionnaires, ensembles, frozensets
- Booléens : valeurs vraies et fausses, opérateurs logiques
Fonctions
- Définition de fonctions : paramètres, valeurs de retour, valeurs par défaut
- Arguments variables : *args, **kwargs
- Callbacks et fonctions d'ordre supérieur
- Programmation fonctionnelle : lambda, map, filter, reduce
- Compréhensions : compréhensions de listes, dictionnaires, ensembles
- Générateurs : yield, expressions génératrices, send
- Décorateurs : décorateurs de fonctions, de classes, chaînage
Jour 3 — Programmation orientée objet et Patrons de conception
Programmation orientée objet
- Le paradigme objet : classes, instances, méthodes, attributs
- Héritage : simple, multiple, MRO, super()
- Propriétés : getters, setters, deleters, propriétés calculées
- Emplacements (slots) : optimisation mémoire, restriction d'attributs
- Interfaces : classes de base abstraites (ABC), protocoles
- Métaclasses : type, métaclasses personnalisées, hooks de création de classes
Patrons de conception
- Patrons de création : Singleton, Factory, Builder, Prototype
- Patrons de structure : Adapter, Decorator, Facade, Proxy
- Patrons de comportement : Observer, Strategy, Command, Iterator
- Introduction à la Zope Component Architecture (ZCA)
Jour 4 — Algorithmique avancée et Travaux pratiques
Algorithmique avancée
- Itération complexe : itertools, itérateurs personnalisés, chaînage
- Types de données : namedtuples, enums, dataclasses
- Problèmes complexes : récursivité, mémoïsation, programmation dynamique
- Combinatoire : permutations, combinaisons, produits cartésiens
- Création de nouveaux types : conteneurs personnalisés, types numériques
- Exceptions avancées : hiérarchies d'exceptions personnalisées, gestionnaires de contexte
Travaux pratiques avancés
- Exercices guidés appliquant les concepts des jours 1 à 4
- Construction d'une application complète de zéro
- Revue de code et discussion des bonnes pratiques
Jour 5 — Manipulation de données
- CSV : lecture, écriture, DictReader, DictWriter
- Bases de données : MySQL, PostgreSQL, SQLite avec Python DB-API
- XML : validation avec schémas, parcours avec ElementTree et lxml
- LDAP : connexion et interrogation des services d'annuaire
- PDF : génération et manipulation
- OpenDocument : lecture et écriture de fichiers ODS/ODT
Modules complémentaires (disponibles sur demande)
- Applications console : analyse d'arguments, fichiers de configuration, journalisation
- Programmation réseau : sockets, clients HTTP, protocoles
- Programmation système : système de fichiers, processus, signaux
- Programmation parallèle : threading, multiprocessing, concurrent.futures
- Interfaces graphiques avec GTK
- ORM avec SQLAlchemy
RECOMMANDATIONS
Les mises à jour suivantes sont suggérées pour moderniser ce programme de formation :
- Ajouter une section dédiée aux annotations de type et au module typing (PEP 484, PEP 604)
- Inclure le pattern matching structurel (instructions match/case, Python 3.10 et ultérieur)
- Couvrir les outils modernes : uv pour la gestion de paquets, ruff pour le linting, mypy pour la vérification de types
- Remplacer GTK par une alternative moderne (textual pour les TUI, ou PySide6 pour les GUI)
- Ajouter Pydantic pour la validation de données en module complémentaire
- Envisager l'ajout d'une introduction aux environnements virtuels et à la gestion des dépendances
