Image de NordWood Themes

Python : Bonnes pratiques et Design patterns

Objectifs

Cette formation Python de niveau Avancé vous apprend les bonnes pratiques de programmation avec Python.
Lors de ce cours, les participants approfondissent leur expérience de la programmation avec Python pour rendre leurs applications fiables et stables et pour appliquer des design patterns (patrons de conception) qui leur permettront de résoudre les principales difficultés qu'ils rencontrent dans la conception de logiciels avec Python.

Concrètement, à l'issue de ce cours les participants auront acquis toutes les capacités nécesssaires pour :

  • Appliquer des design patterns et des bonnes pratiques pour développer des applications avec Python

  • Exploiter des fonctionnalités avancées de programmation Python pour concevoir des programmes fiables

  • Créer et gérer des threads de contrôle concurrents

  • Générer des requêtes et des réponses aux services Web REST et utiliser les données renvoyées

  • Suivre l'exécution du programme et améliorer les performances

  • Lancer des tests unitaires sur les programmes et les modules Python, les installer et les distribuer.

A qui s'adresse cette formation

Public :

Cette formation est destinée aux programmeurs, développeurs, ingénieurs en logiciels, testeurs et responsables techniques souhaitant approfondir leurs connaissances du langage Python.

 

Prérequis :

Afin de suivre ce stage, il est nécessaire d'avoir suivi la formation Python ou de posséder les connaissances équivalentes telles qu'une expérience professionnelle d'au moins 3 mois de programmation avec Python.

Contenu du cours

Programmation orientée objet avec Python

Étendre les classes pour définir des sous-classes
Hériter des plusieurs super-classes et classes mixin
Ajouter des propriétés à une classe
Définir des classes abstraites de base

Fonctionnalités Pyhton

Écriture de code Python

Personnaliser les itérations et les indexations avec des méthodes « magiques »
Modifier le code de façon dynamique avec le « monkey patching »

Traitement des exceptions

Lever des exceptions personnalisées
Réduire la complexité du code avec les gestionnaires de contexte et l'instruction with

Vérification du code et tests unitaires

Tests : Les bonnes pratiques

Développer et lancer des tests unitaires Python
Simplifier les tests automatiques avec le paquetage Nose

Vérification du comportement du code

Investiguer les dépendances entre objets avec le paquetage Mock
Mettre en œuvre les assertions avec le paquetage MagicMock

Recherche des erreurs et techniques de débogage

Identification des erreurs

Journaliser les messages pour les audits et le débogage
Vérifier le code à la recherche de bogues avec PyLint

Débogage du code Python

Extraire les informations sur les erreurs à partir des exceptions
Suivre l'exécution du programme avec l'environnement de développement intégré PyCharm

Design patterns Python

Patrons structurels

Mettre en œuvre les patrons décorateurs avec @
Contrôler les accès à un objet avec le patron Proxy

Patrons comportementaux

Utiliser le patron d'itération avec les générateurs Python
Définir un algorithme squelette avec le patron de méthode
Autoriser des couplages lâche entre classes avec le patron observateur

Interface avec les clients et les services Web REST

Services Web REST Python

Développer un service REST
Générer des réponses JSON pour des clients Ajax

Clients REST Python

Envoyer des requêtes REST depuis un client Python
Utiliser les données JSON et XML renvoyées

Mesure et amélioration de la performance de l'application

Mesurer l'exécution de l'application

Chronométrer l'exécution des fonctions avec le module « timeit »
Suivre l'exécution du programme via « cProfile »
Manipuler le suivi de l'exécution de manière interactive avec « pstats »

Les fonctionnalités du langage Python pour l'optimisation des performances

Déterminer les structures de données efficaces parmi listes, dictionnaires et tuples
Transformer et filtrer des ensembles de données avec les compréhensions
Remplacer l'interpréteur traditionnel Python par PyPy

Installation et distribution de modules

Gestion des versions des modules

Installer les modules depuis le dépôt PyPi avec pip
Portabilité du code entre les différentes versions de Python

Paquetage des modules et des applications Python

Définir des environnements Python isolés avec « virtualenv »
Préparer la distribution d'un paquetage avec « setuptools »
Importer les modules Python dans un dépôt local

Exécution en parallèle

Processus légers (threads)

Créer et gérer plusieurs threads de contrôle avec la classe Thread
Synchroniser des threads avec des verrous

Traitements lourds

Exécuter des commandes du système d'exploitation comme sous-processus
Synchroniser des processus avec les files d'attente
Exécuter des traitements en parallèle avec les groupes de processus et des exécuteurs

TechnoWide

3 rue du Golf

Parc Innolin

CS 60073

33701 MERIGNAC CEDEX

Bordeaux

  • LinkedIn Social Icon