Description
Cette formation présente concepts avancés et peu connus de Python : structures internes avancées, décorateurs, gestionnaires de contexte, itérateurs et leurs mises en œuvre respectives.
Public cible
- développeurs confirmés
- débutant s’abstenir
Tarifs (inter)
1650 € HT par stagiaire (pauses et repas inclus)
Durée
3 jours, 21 heures
Objectifs
- S’approprier et s’orienter dans la grande diversité des bibliothèques internes de Python
- Apprendre à privilégier l’utilisation de ces bibliothèques afin de faciliter la maintenance de vos applications
- Maîtriser l’utilisation des techniques avancées du langage Python : Context Manager, Closures, Fonctions avancées, Itérateurs
- Choisir les bonnes structures de données en fonction de la complexité des cas d’usage
Théorie / pratique
Chaque concept présenté est suivi d’une série d’exercices pour une mise en situation efficace.
35% théorie / 65% pratique
Prérequis
- bonne maîtrise des fondamentaux du langage Python
- pratique quasi quotidienne de ce langage.
Experts animant cette formation
Programme
Rappels sur les bibliothèques utiles
- La bibliothèque « logging »
- Intérêt par rapport à la fonction print
- Intérêts et principes
- Mise en oeuvre d’un premier exemple (par programmation ou par fichier de configuration)
- Modifier les filtres
- Point sur les traces en multi-threading, en multi-processing
- Les arguments en ligne de commande
- La variable « sys.argv »
- La bibliothèque « argparse »
- La bibliothèque externe « click »
- Les fichiers de configuration
- La bibliothèque « configparser »
- La bibliothèque « json »
- Le traitement des fichiers YAML
Les structures de données avancées et leurs outils
- Rappel sur les types en Python
- Les types avancés (« Containers », « Collections », « Sequences », « Mapping »)
- Propriétés des types et méthodes magiques (mutable, subscriptable, hashable, trucmuchable, …)
- Introduction aux annotations
- Programmation Orienté Objet Avancée
- La bibliothèque « collections »
- defaultdict,
- Counter
- deque
- namedtuple
- Les fonctions de manipulation des collections
- Fonctions « map »/ « filter » vs générateurs à la volée
- Fonctions “all” et “any”
- La bibliothèque « itertools », les itérateurs
- Les bibliothèques « heapq » et « bisect »
- Intérêts
- Exemple de mise en œuvre
Techniques avancées
- Fonctions avancées et pièges classiques
- Le piège des paramètres par défaut de types mutables
- L’opérateur logique « or » lors des affectations
- Différentes façons de créer les fonctions (lambda, def)
- Espaces de noms et règle LEGB (variables « local », « non local », « global » et concept de closure)
- Paramètres à volonté avec *args et **kwargs
- Fonctions d’ordres supérieurs
- Les décorateurs (ou fonction englobante)
- Présentation du concept
- Les closures
- Cas d’usage des décorateurs
- Mise en œuvre (à l’aide de fonctions et de classes)
- Paramètres de décorateurs
- Études de décorateurs de la bibliothèque « functools » (@lru_cache, @wraps)
- Les « Context Managers »
- Présentation et cas d’usage (fichiers, bases de données, réseau, accès concurrent aux données...)
- Intégration sur une classe avec les « dunder » méthodes spécifiques
- Intégration sur une fonction avec la bibliothèque « contextlib »