Description
Cette formation vise d’une part à vous donner une compréhension des mécanismes subtils qui font la force de Python (les opérations paresseuses et les générateurs, les fonctions avancées et les décorateurs, l’orienté objet et l’accès aux attributs). D’autre part, seront abordées les bonnes pratiques de développement (formatage du code, tests et mock, isoler et rendre reproductibles les projets…).
Public cible
- Développeurs
- Ingénieurs
- chercheurs ayant une bonne connaissance de Python.
Tarifs (inter)
1650 € HT (pauses et repas inclus)
Durée
4j soit 28h
Objectifs
- Utiliser les techniques avancées du langage Python : “Context Manager”, “Closures”, Decorateurs, fonctions avancées
- Identifier les patrons de conceptions (Design Patterns) à utiliser dans des cas spécifiques
- Analyser les performances d’un programme python pour en identifier les goulots d’étranglement à optimiser
- Packager et déployer ses bibliothèques
- Identifier et utiliser les bibliothèques incontournables du langage pour réaliser des développements complexes rapidement
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
- Connaitre et maitriser la syntaxe de base de python, la création de fonctions ainsi que les notions de programmation orientée objet (attribut, classes…).
- Être à l’aise avec la ligne de commande.
- Une connaissance des bonnes pratiques en développement (gestion de version, configuration d’éditeurs de texte) est un plus pour certaines parties
Experts animant cette formation
Programme
Le langage Python
- Présentation / historique et contexte / philosophie
- Cas d’utilisation et de non utilisation
- Présentation des outils de développement
Rappels sur Python
- Formatage et affichage des variables
- La gestion d’erreur et la compréhension des exceptions
- Fonctions.
- Portée des variables et la règle LEGB
- Les lambda expression
- Les générateurs
- La structuration du code en modules.
- L'utilisation des fichiers et encodage de caractères.
Python avancé
- Usages avancés des fonctions
- Fonctions d’ordre supérieur
- Présentation des décorateurs et de leurs usages classiques
- Décorateurs de la bibliothèque standard
- Les classes de la bibliothèque collections
- Les méthodes magiques des classes
- Générateurs, coroutines et le mot clé yield
- Gestionnaires de contextes (context manager), définition et cas d’usages
- Sous forme de classe Sous forme de fonctions
Qualité de code (QA)
- Les environnements virtuels pour gérer facilement les projets
- Le concept et les cas d’usages des environnements virtuels
- Installation de bibliothèques tierces avec pip
- Création et évolution d’environnements virtuels
- Les outils d’analyse statique et l’annotation de type
- Présentation du concept
- Présentation des outils (pylint, mypy)
- Le formatage
- Présentation de la PEP 8
- Utilisation d’autoformatter (black, autopep8)
- La gestion de la documentation
- Écriture de la documentation (docstring, formattage)
- Les outils d’extraction de documentation
- Les tests unitaires
- Le concept de tests unitaires
- Les outils de tests unitaires (unittest, pytest) en python, notion de couverture de tests et génération de rapports
- Présentation du concept de développement piloté par les tests (TDD)
- L'automatisation des tests, l'agrégation de tests.
- Intégration dans un pipeline d’intégration continue (CI)
- Débogage
- Le concept de déboguer du code
- Le débogueur textuel de python
- Les débogueurs graphiques
Programmation orientée objet avancée
- Rappel des spécificités des objets en Python
- Définition et utilisation des différents types de méthodes en Python
- Les méthodes classiques
- Les méthodes de classe
- Les méthodes statiques
- Le “duck typing” et l’interprétation
- Spécificité de l’accès aux attributs en Python
- Les méthodes magiques __getattribute__ et __getattr__
- Les “property” pour l’encapsulation
- L’héritage multiple et ses cas d’utilisation
- Les patrons de conception (design patterns)
- Le concept de design patterns et leur utilité
- Présentation de quelques design patterns connus et leurs cas d’utilisation classique
Améliorer les performances de codes Python
- Mesurer les performances
- Analyser les temps de réponses(« timeit » & « cprofile », techniques de visualisations)
- Examiner la consommation mémoire
- Initiation aux traitements répartis
- Utilisation du multiprocessing
- Présentation du concept de “Map Reduce”
- Présentation du module Dask
Utilisation de bibliothèques classiques de l’écosystème
- Découvrir les points importants pour choisir une bibliothèque
- Installer correctement une bibliothèque Python
- Étudier et parcourir la documentation d’une bibliothèque pour implémenter nos besoins