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