Rappels importants sur le langage
- Syntaxe de base et nouveautés récentes
- Rappels sur les fonctions
- Conditions ternaires, listes en compréhensions, one-liners
Fonctions avancées
- Accès aux attributs des fonctions
- Les générateurs
- Les décorateurs
- Les closures
Travaux pratiques : création de décorateurs de contrôle, mise en place d'itérables selon plusieurs techniques
Programmation orientée objet avancée
- Rappels sur la programmation orientée objet
- Ajout de propriétés à une classe
- Introspection
- Redéfinition des méthodes spéciales : itérateurs, context managers, ...
- Définition des classes de base abstraites
- Création de métaclasses
Travaux pratiques : exploration des différentes fonctionnalités avancées
Vérification du code et tests unitaires
- Tester les meilleures pratiques
- Développement et exécution de tests unitaires Python
- Simplifier les tests automatisés avec nose
- Vérification du comportement du code
- Utiliser des mocks
- Détection des erreurs et techniques de debugging
- Vérifier votre code pour des bugs potentiels avec Pylint
- Extraction des informations d'erreur depuis les exceptions
- Tracer l'exécution d'un programme avec l'IDE PyCharm
Travaux pratiques : test des différents programmes créés précédemment
Interfaçage avec les webservices et les clients de REST
- Présentation de Flask, Django, etc.
- Mise en place d'un service REST
- Générer des réponses JSON pour soutenir les clients Ajax
- Clients Python REST
- Envoi de demandes REST à partir d'un client Python
- Consommation de données de réponse JSON et XML
Travaux pratiques : consommation d'API et webscrapping
Mesure et amélioration des performances de l'application
- Chronométrage de l'exécution des fonctions
- Profilage de l'exécution d'un programme
- Manipuler un profil d'exécution de manière interactive
- Utilisation des fonctionnalités du langage Python pour les performances
- Appliquer efficacement les structures de données, notamment les listes, les dictionnaires et les tuples
- Remplacement de l'interpréteur Python standard par PyPy
Installation et distribution des modules
- Gestion des dépendances d'un projet avec pip
- Le fichier requirements.txt
- La gestion des versions
- Installation de modules du dépôt PyPi à l'aide de pip
- Portage du code entre les versions Python
- Création de paquets de modules et d'applications Python
- Mise en place d'environnements virtuels (virtualenv, conda, pipenv, poetry, ...)
- Construire un paquet de distribution avec setuptools
- Télécharger vos modules Python sur un dépôt local
Travaux pratiques : mise en place d'un projet créé avec environnement virtuel, packaging et déploiement sur PyPI
Exécution simultanée
- Création et gestion de plusieurs fils de contrôle avec la classe Thread
- Synchronisation des fils à l'aide de verrous
- Lancement des commandes du système d'exploitation en tant que sous-processus
- Synchronisation des processus avec les files d'attente
- Paralléliser l'exécution en utilisant des pools de processus et des exécuteurs
Travaux pratiques : exécution de traitements en parallèle et mesure des performances
Aller plus loin
- Présentation de Cython, CPyton
- Le typage avec MyPy