PLB CONSULTANT : 01. Python, programmation Objet
Organisme
92300 LEVALLOIS PERRETVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
Travaux pratiques. Auto-évaluation en début et en fin de formation.
Prix
Public
Développeurs, ingénieurs, chefs de projets proches du développement.
Pré-requis
Avoir des connaissances de base en programmation (souhaitable en langage objet).
Objectifs pédagogiques
- Connaître la syntaxe du langage Python
- Acquérir les principes de la programmation objet
- Mettre en œuvre les fonctionnalités des modules Python et les bonnes pratiques associées
- Savoir concevoir des interfaces graphiques
- Appréhender l’utilisation des outils de test et d'évaluation d'un programme Python
Programme détaillé
Bien commencer avec Python
Pourquoi utiliser Python plutôt qu'un autre langage ?
Exemples de projet en Python
Différences entre les versions de Python
Installation de Python (pré-requis, fichiers, arborescence détaillée)
Fonctionnement de l'interpréteur Python
Les apports de l'interpréteur interactif iPython
Un premier programme...
Travaux pratiques
Objectifs : Prendre en main rapidement son environnement de développement
Description : Premier programme simple interactif de saisie et d’affichage de texte afin de prendre en main l'interpréteur Python. Un second programme non interactif permet de voir l’aspect automatisation de Python.
Les bases de Python (la syntaxe, les types)
Organisation du code (modules, package, importations)
Recommandations de nommage
Les types de base (entier, chaîne, réel, ...)
Erreurs classiques sur les types
Boucles (for), opérateurs, tests (if/else)
Définition et appel de fonction
Travaux pratiques
Objectifs : Mettre en œuvre la syntaxe fondamentale de Python
Description : Saisie de notes dans un tableau numpy, affichage de la moyenne, de la plus petite et de la plus grande note. Chargement des notes depuis un fichier CSV (avec en tête), recherche du meilleur étudiant.
Programmer objet en Python
Limites de la programmation « simplement » structurée
Philosophie, concepts, et vocabulaire de la programmation objet
Représentation des données en programmation objet (classes, propriétés)
Représentation des traitements (méthodes)
Contrôler l’accès aux données (encapsulation)
Exemples de classes prédéfinies en Python permettant de profiter pleinement de l’approche objet
Cycle de vie d’un objet (constructeur, destructeur)
Accéder aux attributs et fonctionnalités de l’objet cible (self)
Comment les objets communiquent entre eux ?
Classe mère et classe fille (héritage)
Des fonctions différentes avec … le même nom (polymorphisme)
Héritage simple et héritage multiple
La fonction super()
Protection des traitements (public, protected, private)
Le mécanisme de traitement des exceptions
Exemple de formalisme UML (diagramme de classe)
Tour d’horizon des classes fondamentales existantes en Python
Notion de Design Patterns
Travaux pratiques
Objectifs : Savoir programmer objet en Python. Comprendre les liens entre les classes.
Description : Mise en œuvre progressive d’un modèle objet en Python CLASSE, ELEVE, EXAMEN, NOTES regroupant l’ensemble des concepts vus dans ce chapitre et favorisant la réflexion sur les bonnes pratiques (encapsulation, héritage ? composition ?) tout en prenant en main la syntaxe de façon concrète.
Types de données évolués
Savoir choisir les bonnes structures de données
Tuples, séquences et listes (append, extend, insert, ...)
Fonctions utiles avec les listes (filter, map, reduce)
Gestion des piles ou des files
La puissance des dictionnaires (tableaux associatifs)
Construire une liste sur la base d'une expression (compréhension)
Travaux pratiques
Objectifs : Savoir utiliser les listes en Python
Description : Ajout à la classe ELEVE de propriétés (utilisation des list et set) sous la forme de label inclinés (utilisation de la librairie Matplotlib)
Compléments sur le langage Python
Générateurs et itérateurs
Scripts exécutables
Opérateurs associés aux listes
Enchaînement de tests par rapport aux listes
Comparer les séquences
Travaux pratiques
Objectifs : Savoir utiliser les itérateurs
Description : Modification de la classe ResultatExamen afin qu'elle implémente un itérateur. Afficher dans un log les données qu'elle contient via l'utilisateur de l'itérateur (librairie logging)
Les modules de Python
Philosophie de Python avec les modules (standard, tiers, ...)
Tour d'horizon des modules standards
Module re (expressions rationnelles)
Modules os et sys (services du système d'exploitation)
Module csv (fichiers structurés par séparateur)
Comment trouver les modules ?
Installer des modules tiers (setuptools, EasyInstall)
Le dépôt central : Python Package index (Pypi)
Importer des modules
Mieux gérer son environnement avec Virtualenv
Travaux pratiques
Objectifs : Maîtriser l’utilisation des modules en Python
Description : Création d’un nouveau module en restructurant le projet précédent afin que les 2 classes Resultat et ResultatExamen soient dans un package note. On écrit ces données dans un fichier texte (librairie csv). On modularise notre projet afin de simplifier sa maintenance et sa livraison en respectant les bonnes pratiques.
Gestion des données (fichiers, SGBD, XML)
Accéder aux fichiers (objet File)
Conformité des modules Python pour accéder à une base de données (DB-API)
Python et requêtes SQL
Filtrer les données grâce aux expressions régulières
Présentation de la manipulation de flux XMl en Python (ElementTree)
Manipuler des fichiers CSV
Travaux pratiques
Objectifs : Savoir dialoguer avec une base de données de type SQL en encapsulant les traitements de lecture/écriture pour respecter les bonnes pratiques d’architecture
Description : Construction d’un accès à une base MySQL ou PostgreSQL (librairies panda, psyco)
Dans un module persistance, on construit une classe ResultatDao, qui permet toutes les actions standards sur la table résultats (insertion, mise à jour, suppression, lecture ciblée ou complète de la table).
Création d’interface graphique
Spécificités du développement d’interface graphique (programmation événementielle)
Présentation de la bibliothèque TkInter.
Les principaux conteneurs.
Présentation des widgets disponibles (Button, Radiobutton, Entry, Label, Listbox, Canvas, Menu, Scrollbar, Text...).
Le gestionnaire de fenêtres.
Le placement des composants, les différents layouts.
La gestion des événements, l'objet event.
Les applications multifenêtres.
Un petit mot sur la bibliothèque Qt
Travaux pratiques
Objectifs : Mettre en œuvre une IHM en Python avec TkInter
Description : Développement d’une maquette pour compléter l’atelier précédent sous forme graphique (menu, boîtes de dialogue, liste, boutons, …) afin de proposer une interface pour la saisie des actions de manipulations des données et l’affichage des résultats
Qualité et outils
En quoi consiste l’assurance qualité d’un programme Python (QA) ?
Vue d’ensemble de la « trousse à outils » proposée au développeur
Utiliser le plugin Eclipse pour Python (Pydev)
Rechercher des bugs avec PyChecker
Vérifier le respect des standards avec PyLint
Utiliser le guide de style PEP 8 (Python Enhancement Proposals)
Générer de la documentation
Disposer de statistiques sur l’exécution de son programme (profiling)
Comprendre l'intérêt des outils de Tests (Doctests, Unit tests)
Travaux pratiques
Objectifs : Bien comprendre le champ fonctionnel de chaque outil présenté dans ce chapitre et savoir les utiliser
Description : Audit de code Python ne respectant pas les standards professionnels en terme de lisibilité. Bonnes pratiques dans le Deboguage d’un programme. Mise en œuvre de tests unitaires simples. Génération de documentation. Repérage des parties consommatrices d’un programme Python d’analyse de données (profiling de l’application du TP d’extraction des données de data.gouv.fr).