Vous connaissez Python mais vous voulez exploiter tout son potentiel ? Cette formation de perfectionnement couvre les aspects avancés du langage : programmation concurrente avec multi-threading, communication réseau par sockets, manipulation XML, interfaces graphiques et intégration avec C et Java. Elle vous permet de développer des applications Python robustes et performantes dans des contextes d’entreprise exigeants.
Public visé
Développeurs, administrateurs, architectes souhaitant approfondir Python.
Prérequis
Avoir suivi cette formation, ou en maîtriser les thèmes abordés :
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Décrire les subtilités du langage Python et les exploiter pour écrire des programmes robustes et performants
Programme
Jour 1
Maîtrise du langage
- Fonctions : filter, map, reduce (rappel : lambda,
*args,**kwargsvus en initiation) - Modèle de données avancé : module collections (deque, Counter, defaultdict, OrderedDict)
- Littéraux : bytes, r-strings, hexadécimal, octal, binaire
- Mutabilité et immutabilité
- Générateurs : yield, yield from, expressions génératrices, compréhensions imbriquées
- Décorateurs : fonctions et classes
- Introspection : dir, help, type, getattr, setattr
- Modules standards : math, random, itertools, functools
Travaux pratiques
- Manipulation de littéraux : conversion bytes/string, écriture en hexadécimal/octal/binaire
- Comparaison du comportement entre types mutables et immutables
- Écriture d’un générateur avec
yieldet utilisation d’expressions génératrices - Application d’un décorateur de fonction et d’un décorateur de classe
- Introspection d’un objet avec
dir,typeetgetattr - Utilisation de
itertoolsetfunctoolssur une chaîne de traitement
POO avancée
- Héritage multiple
- Métaclasses
- Classes abstraites (abc)
- Descripteurs
Travaux pratiques
- Implémentation d’une classe abstraite avec
abc.ABCet@abstractmethod - Création d’une métaclasse simple
- Mise en œuvre d’un descripteur de propriété
- Résolution d’une diamond inheritance avec MRO
Optimisation et performance
- Complexité algorithmique : O(1), O(n), O(n²)
- Choix de structures et fonctions performantes
Travaux pratiques
- Mesure et comparaison de la complexité de deux algorithmes (linéaire vs quadratique)
- Substitution d’une structure naïve par une structure optimisée (
set/dict/deque) et mesure du gain
Jour 2
Programmation multithread
- Concepts de bases : programme, thread, synchronisation
- Gestion de threads : modules thread, threading
- Threads et la Programmation Orientée Objets
- Gestion des aspects concurrentiels : lock, mutex, sémaphores
- Threads et échanges de données
- Notion de pool de threads
Travaux pratiques
- Création d’un programme lançant plusieurs threads
- Synchronisation de threads pour résultat dépendant de traitements parallèles
- Protection des données globales via mutex et lock
- Ajout d’un sémaphore pour accès aux ressources limitées
- Échange de données entre threads lancés
- Travail sur pool de threads disponibles
Programmation réseau avec les sockets
- Rappels sur TCP/IP et concepts de base de l’API socket
- Utilisation du module socket
- Socket en mode connecté : TCP ou stream
- Socket en mode non connecté : UDP ou datagram
- Les sockets et la Programmation Orientée Objets
- Combinaison des sockets et des threads
Travaux pratiques
- Création d’un programme serveur puis client échangeant données via sockets TCP puis UDP
- Démonstration avantage multithreading pour serveurs
Python et XML
- Concepts de base
- DOM (Document Object Model)
- SAX (Simple API for XML)
- Parser
- Gestion de fichiers XML selon SAX et selon DOM
- Requêtage Xpath
Travaux pratiques
- Création d’un programme de lecture flux données importantes via SAX
- Mise à jour d’une structure via DOM
Jour 3
Programmation graphique
- Concept de programmation événementielle
- Tkinter : présentation et mise en oeuvre
- Les widgets standards
- Mise en page avec grid et pack
Travaux pratiques
- Écriture d’un programme utilisant Tkinter d’échange utilisateur avec l’interface graphique
Persistance et bases de données
- Concepts de base : sérialisation / désérialisation
- Différents modèles de persistance : Pickle
- Persistance texte avec JSON et XML
- Concepts de base : SQL, tables, curseur
- Gestion de la base de données SQLite
Travaux pratiques
- Création d’un programme qui sérialise un flux JSON
- Écriture d’un programme d’accès à une base de données SQLite
- Mise au point de requêtes de lecture, insertion, mise à jour depuis Python
Intégration Python/C et Python/Java
- Présentation générale
- Python/C et les packages :
ctypes,cffi,pybind11 - Natifs C
- Natifs Java
Travaux pratiques
- Création d’un programme interfaçant avec des API écrites en C et en Java
Tests unitaires
- Concepts : TDD, AAA (Arrange/Act/Assert), couverture de code
- Module unittest (bibliothèque standard)
- Framework pytest : fixtures, paramétrage
- Mocks et stubs (unittest.mock)
- Mesure de couverture (coverage)
Travaux pratiques
- Écriture d’une suite de tests pytest selon le pattern AAA
- Création d’une fixture paramétrée
- Mock d’une dépendance externe avec
unittest.mock - Mesure de couverture avec
coverageet identification des lignes non testées
Mise au point de programme
- Débogage : exécution pas à pas
- Modes : verbose et trace
- Analyse des performances et profiling
Python et l’IA : développement assisté
- Principe des assistants IA de développement
- Génération, explication et refactoring de code Python avancé
- Aide à la rédaction de tests unitaires
- Aide au débogage et au profiling
- Bonnes pratiques et limites (revue humaine systématique, données sensibles)
Modalités d’évaluation des acquis
En cours de formation, par des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
Formation DEV-PYTHON-350 — Python - Perfectionnement. Domaine : Développement. Niveau : Avancé. Durée : 3 jours (21 heures). Mots-clés : python, perfectionnement, multi-threading, réseau, gui. Cylian Formation, Dijon.