Title: Python avancé
Date: 2023-01-17 15:41:00

C’est la seconde de mes deux formations Python. Alors que la
[formation *initiation*]({filename}/pages/python-initiation.md)
enseigne l’utilisation des classes et bibliothèques pour créer des
programmes simples, la formation *Python avancé*, de l’autre côté du
miroir, enseigne la création de ces classes et bibliothèques pour
créer des bibliothèques réutilisables dans des programmes
arbitrairement complexes.


## Objectifs

À la fin de cette seconde formation les stagiaires maîtrisent Python
dans l’objectif de produire un code *lisible*, *maintenable*, et
*testé* sur tout type de projet.

L’accent est mis sur le partage et la réutilisation du code :

- Création de bibliothèque (modules, paquets).
- Packaging et distribution de ces bibliothèques.
- Gestion des dépendances d’une bibliothèque et d’un l’utilisant.
- Test et documentation d’une bibliothèque packagée.


## Prérequis

Le pré-requis de ce module est d’avoir suivi, ou d’avoir un niveau
équivalent, à la formation [Python
*initiation*]({filename}/pages/python-initiation.md), c’est-à-dire :
être capable de lire et de modifier du Python, être capable de
résoudre des problèmes simples en Python.


## Le contenu

- Les différents protocoles de Python (le protocole d’itération, « les dunder », …).
- Les classes et leurs instances (où on parle de la MRO, de `super()`, …).
- Le protocole descripteur.
- Le *garbage collector*.
- Les *floats* et l’IEEE 754.
- Créer et gérer les exceptions, le `else` et le `finally` du `try`.
- Les gestionnaires de contexte.
- Les décorateurs.
- Les listes en compréhension.
- L’opérateur *walrus* (`:=`).
- L’encodage des chaînes de caractères.
- Le packaging (`pyproject.toml`, `python -m build`, `twine`, …).
- L’asynchrone avec `async` et `await`.


## Durée

Cette formation se déroule idéalement en cinq jours, mais elle est
réalisable en 3 jours.


## Contact

Pour en savoir plus, contactez-moi par email : julien at palard.fr.
