Rappels importants sur le langage
- Affectation par référence et types de données modifiables, non modifiables (mutable).
- Passage d'arguments, valeurs par défaut et variables locales.
- Variables de classe et d'instances.
- Les slices et structures de données avancées.
- L'introspection.
- Eléments avancés des structures de contrôle : la clause else des instructions for, while, try/except.
Travaux pratiques
Optimisation : intersection de listes et calcul de complexité d'algorithmes.
Fonctions avancées
- Utilisation avancée de décorateurs (de la génération à la consommation, pipeline de consommateurs).
- Les décorateurs et Design Patterns.
- Fermeture/closure.
Travaux pratiques
Chaînage de consommateurs de données. Abonnement à des événements via les décorateurs.
Programmation Orientée Objet avancée
- Les propriétés (property).
- Les itérateurs.
- L'héritage multiple et ses travers.
- Les Context Managers.
- Les classes et méthodes abstraites (ABC).
- Les métaclasses.
Travaux pratiques
Implémenter une métaclasse pour créer des classes de type singleton.
Déploiement et qualité
- Installer des librairies tierces (pip, easy_install).
- Le Python Package Index (PyPI).
- Packager ses librairies (distutils, setuptools).
- Déployer un environnement autonome (virtualenv et buildout).
Travaux pratiques
Packager une librairie et la déposer sur PypI.
Le parallélisme : optimiser les performances de vos programmes
- Profilez vos programmes avec Timeit et cProfile.
- Parallélisation : évitez le multithreading et foncez avec le multiprocessing.
- Calcul distribué avec la librairie Celery.
Travaux pratiques
Répartition et consolidation (Map Reduce) de calculs avec Celery.
Les librairies contribuant au succès du langage
- Calcul scientifique et statistiques avec Numpy, Scipy, Matplotlib et Pandas.
- Intelligence Artificielle et algorithmes d'apprentissage avec Scikit-Learn.
- Recherche d'informations dans des fichiers XML avec ElementTree.
- Réseau : relay tcp avec Twisted et supervision SNMP avec PySNMP.
Travaux pratiques
Extraction d'informations dans des fichiers de log XML, filtres et statistiques sur les données collectées puis représentation à l'aide de graphiques des tendances des informations.