Python, perfectionnement
Description
Rappels importants sur le langage et compléments
Le typage fort en Python
Schéma de fonctionnement de la mémoire d¿un programme Python (variables locales, passage par valeur/référence, variables non mutable, etc.)
Rappels sur les différences entre tableaux, listes, dictionnaires, slices, etc.
Les fonctions anonymes (lambda)
Syntaxe d'appels étendus (*args, **kwargs)
Intérêts de déterminer le type d'un objet, d'une méthode, ou d'un module (introspection)
Exemple de synthèse sur les concepts objets en Python (classes, propriétés, méthodes, instances)
Exemple de synthèse sur la syntaxe du langage (variables, boucles, tests, exceptions...)
Packager et déployer votre code Python
En quoi consiste le packaging de code ?
Projet vs bibliothèque
Comment décrire le module packagé (setup.py) ?
Le Python Package Index (PyPI, Métadonnées).
Les outils pour packager ses librairies (disutils, setuptools)
Installer des librairies tierces (pip, easy_install).
Isoler les environnements de différents projets (virtualenv)
Gérer un projet avec pipenv
Créer un wheel distribuable avec setup.cfg
Compiler le code Python en un exécutable avec nuitka
Manipulations avancées des primitives en Python
Générer du code à la volée : factories puis métaclasses
Décorateurs à plusieurs niveaux
Context manager et décorateur à la fois
Au delà de yield : la méthode send() des générateurs
Monkey paching et autres injections de code
Introspection
Performances et parallélisation
Programmation non bloquante avec les threads
Le GIL et les limites des threads
Exploiter plusieurs coeurs avec le multiprocessing
I/O asynchrone avec asyncio
Les outils pour lire l'activité (Timeit, cProfile)
Calcul distribué avec la librairie Celery
Les faiblesses du multithreading
Manipulations avancées des données
Rappels sur les formats de données structurées : CSV, flux XML et JSON
Manipulation des données issues de ces fichiers par des structures Python adaptées
Le parseur XML ElementTree
Fonctions d'accès et de download de données en ligne
A quoi sert un ORM (Object-relational Mapper) ?
Synchronisation des objets Python avec une base SQL (ORM sqlAlchemy)
Principes des API et des Web Services
Consommation des API et des Web Services en Python
La représentation graphique de données en Python
Introduction aux bases de la visualisation de données
Focalisation sur la génération de graphes grâce à la librairie Matplotlib : démonstration de l'application de graphes Matplotlib à la visualisation de problèmes concrets
Présentation des grandes librairies Python
Objectifs
- Optimiser vos programmes grâce au multi-threading et à la supervision (monitoring)
- Connaître les manipulations avancées en Python : Context
- Manager, métaclasses, injection et introspection du code...
- Maîtriser la manipulation des données
- Connaître et savoir exploiter à un premier niveau les bibliothèques qui font (ou on fait) le succès de Python (Mathématiques, Scientifique, IA, Machine Learning, Réseau)
Résultat
- Attestation de suivi de formation
- Certification TOSA Python