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
- exploiter les fonctions d’ordre supérieur —
filter,map,reduce - utiliser le module
collectionsdequepour files bidirectionnellesCounterpour dénombrementdefaultdictetOrderedDict
- manipuler les littéraux avancés —
bytes, r-strings, hexadécimal, octal, binaire - distinguer mutabilité et immutabilité
- écrire des générateurs
yieldetyield from- expressions génératrices
- compréhensions imbriquées
- appliquer des décorateurs sur fonctions et classes
- introspecter un objet —
dir,help,type,getattr,setattr - exploiter les 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
- gérer l’héritage multiple et le MRO
- concevoir des métaclasses
- définir des interfaces avec les classes abstraites — module
abc - implémenter des descripteurs de propriété
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
- évaluer la complexité algorithmique —
O(1),O(n),O(n²) - choisir des 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
- comprendre les concepts de base — programme, thread, synchronisation
- gérer les threads
- modules
threadetthreading - threads et orientation objet
- notion de pool de threads
- modules
- synchroniser les accès concurrentiels
locketmutexsemaphorepour ressources limitées
- échanger des données entre 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
- rappeler TCP / IP et l’API socket
- utiliser le module
socket - programmer en mode connecté (TCP / stream) et non connecté (UDP / datagram)
- combiner sockets et threads pour des serveurs multi-clients
Travaux pratiques :
- Création d’un programme serveur puis client échangeant des données via sockets TCP puis UDP
- Démonstration de l’avantage du multithreading pour les serveurs
Python et XML
- comprendre les modèles de parsing XML
- DOM (Document Object Model)
- SAX (Simple API for XML)
- parser des fichiers XML
- interroger du XML avec XPath
Travaux pratiques :
- Création d’un programme de lecture de flux de données importantes via SAX
- Mise à jour d’une structure via DOM
Jour 3
Programmation graphique
- appliquer le modèle événementiel
- mettre en œuvre Tkinter
- widgets standards
- mise en page avec
gridetpack
Travaux pratiques :
- Écriture d’un programme Tkinter d’échange utilisateur avec l’interface graphique
Persistance et bases de données
Persistance
- comprendre la sérialisation et désérialisation
- choisir un modèle de persistance
- Pickle pour objets Python
- JSON pour interopérabilité
- XML pour compatibilité legacy
Travaux pratiques :
- Création d’un programme qui sérialise un flux JSON
Bases de données
- comprendre les concepts SQL — tables, curseur, requêtes
- gérer une base SQLite depuis Python
Travaux pratiques :
- É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
Python/C
- appeler du code C depuis Python
ctypespour bindings simplescffipour une approche modernepybind11pour C++ avancé
Travaux pratiques :
- Création d’un programme interfaçant avec une API écrite en C
Python/Java
- appeler du code Java depuis Python — JPype, Py4J
Travaux pratiques :
- Création d’un programme interfaçant avec une API écrite en Java
Tests unitaires
- appliquer les principes TDD et AAA (Arrange / Act / Assert)
- utiliser
unittestde la bibliothèque standard - écrire des tests avec pytest
- fixtures
- paramétrage
- mocks et stubs via
unittest.mock
- mesurer la couverture avec
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éboguer un programme — exécution pas à pas, breakpoints
- utiliser les modes verbose et trace
- analyser les performances et profiler
Python et l’IA : développement assisté
- identifier les apports des assistants IA en Python avancé
- génération, explication et refactoring de code
- aide à la rédaction de tests unitaires
- aide au débogage et au profiling
- respecter les bonnes pratiques et limites
- revue humaine systématique
- confidentialité des 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.