Skip to content
GitLab
    • Explore Projects Groups Topics Snippets
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • PYTHON - Atelier MatPlotLib PYTHON - Atelier MatPlotLib
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

La forge institutionnelle d'INRAE étant en production depuis le 10 juin 2025, nous vous invitons à y créer vos nouveaux projets.

  • Poulard Christine
  • PYTHON - Atelier MatPlotLibPYTHON - Atelier MatPlotLib
  • Wiki
  • Python_modules_du_developpeur

Python_modules_du_developpeur · Changes

Page history
Update Python_modules_du_developpeur authored 2 years ago by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Showing
with 56 additions and 0 deletions
+56 -0
Python_modules_du_developpeur.md
View page @ 4f44baff
notes suites à la formation avancée Python (intervenant : K. Samuel, mai 2022)
Introduction : rappel des conventions de nommage
I - Les modules à connaître (cette page, en construction)
II - La structuration de code (à venir)
## Introduction : rappel des conventions de nommage
**Règles de nommage** : peu de choses sont interdites en Python, mais un nom de variable doit commencer par une lettre (:robot: 6Po n'est pas un nom valide) et bien sûr certains noms sont réservés : **if**, **for**...
:warning: certains noms de méthode ou de classe sont cependant utilisables, ce qui pose problème car en nommant votre variable **max** ou **list** vous surchargez la méthode ou la classe correspondante, qui du coup n'est plus accessible ! Normalement vous devriez vous en rendre compte avec la coloration syntaxique : si le mot change de couleur c'est qu'il est reconnu par Python...
Python est un langage sensible à la "casse", c'est à dire que les lettres en minuscule sont différentes des lettres en majuscules...
Donc ma_variable, MA_VARIABLE, Ma_Variable et ma_Variable sont des noms différents...
De toutes façons, des **conventions** fortement recommandées vont guider l'utilisation des majuscules. Ainsi, vous aurez une idée de la nature d'un objet rien que par la manière dont les majuscules et les underscore ( _ ) sont présents ou pas...
** Résumé en quatre lignes de principales conventions de nommage :
```python
from monmodule import MaClasseQueJaiCree
MA_CONSTANTE = 42 # mais c'est une convention, techniquement je peux la faire passer à 43
ma_variable_est_une_instance_de = MaClasseQueJaiCree()
```
**Détail des principales conventions** :
rien n'est obligatoire en Python, mais il est fortement recommandé de respecter les conventions suivantes pour faciliter la lecture d'autres codes, notamment :
* noms de **variables** : :snake: en snake-case, les mots sont en minuscules et reliés par des underscore qui le font ressembler à un animal articulé : ma_variable_peut_avoir_un_nom_assez_long
* noms de **classes** : :camel: en CapWords, autrement dit UpperCaseCamelCase : un nom qui commence par une capitale, ou plusieurs mots collés avec chacun une capitale, ce qui crée des bosses dans le nom : MaClasseQuiFaitUnTrucSympa. Les instances de classe seront écrites en snake-case : instance_de_la_classe_sympa = MaClasseQuiFaitUnTrucSympa()
* noms de **constantes** : en snake-case majuscule ("SCREAMING_SNAKE_CASE") : COEFFICIENT, CODE_LACUNE. :warning: ce n'est qu'une convention donc en pratique vous pouvez modifier vos constantes en cours de programme...
* noms de **modules** : en minuscules, en évitant les underscores
* (il y en a d'autres, voir les [PEP8](https://www.python.org/dev/peps/pep-0008/], [éventuellement en chanson...]https://youtu.be/hgI0p1zf31k))
## I - Les modules à connaître
Les amis du développeurs !
......@@ -43,3 +67,35 @@ Premier conseil : installer un meilleur outil pour le shell
à citer encore : **pprint** ...
## II-Structurer du code
Ref: https://openclassrooms.com/fr/courses/7160741-ecrivez-du-code-python-maintenable/7188702-structurez-une-application-avec-le-pattern-d-architecture-mvc
* respecter les conventions pour le rendre facile à lire donc à maintenir
* éviter les "magic numbers", id les nombres dont on ne sait plus ce qu'ils sont
Utiliser des 'constantes' explicites pour faciliter les modifications ultérieures (sachant qu'un "replace' pourrait avoir des effets de bord, un même nombre pouvant signifier des choses différentes !
```python
NB_MINUTES_DANS_UNE_HEURE = 60
TEMPS_PAUSE_EN_SECONDES = 60
PAS_DE_TEMPS_DES_DONNEES_EN_MINUTES = 5
```
=> Notion de "design pattern contant"
* **factoriser** les actions dès que possible
des instructions qui se répètent sont à transformer en **fonction séparées**, voire en **décorateur**
* structurer
![OpenCLasRoomStructurez_MVC](uploads/85a5af591998adefaa532ec33812f56e/OpenCLasRoomStructurez_MVC.png)
Le MVC est une approche d’architecture de logiciel. Il divise les responsabilités du système en 3 parties distinctes :
**Modèle** : Le modèle contient les informations relatives à l’état du système. Ce sont les fonctionnalités brutes de l’application.
**Vue** : La vue présente les informations du modèle à l’utilisateur. Elle sert d’interface visuelle et/ou sonore pour l’utilisateur.
**Contrôleur** : Le contrôleur garantit que les commandes utilisateurs soient exécutées correctement, modifiant les objets du modèle appropriés, et mettant à jour l’application. C’est finalement les rouages de l’application, et c’est la couche qui apporte une interaction avec l’utilisateur.
* les principes SOLID
\ No newline at end of file
Clone repository

Accueil ("Home")


Python, astuces et outils
  • Gestion des versions de Python des paquets (en construction) pip, venv, poetry
  • Python_modules_du_developpeur
    • La doc avec Sphinx

Matplotlib, ateliers et points théoriques

Présentation des ateliers, avec galerie

  • le problème des versions
  • notes sur la version 3.5
  • bien exploiter la doc : les infos des méthodes
  • Atelier A Bases en Python utiles pour comprendre mpl
  • Atelier B graphiques simples
    • suite, lire un fichier
    • focus méthode scatter
    • focus méthodes step et bar
  • Atelier C : les objets d'une figure graphiques avec plusieurs unités
    • Point Théorie Subplots
  • Atelier D : cartes, heatmaps et leurs légendes
    • suite, les fichiers binaires extraire une matrice avec np.fromfile
    • focus : redimensionnement d'une carte "zoom"
  • Atelier E : cas des longues chroniques
  • Atelier G : interactivité widgets, toolbar et événements
    • focus : les événements "MouseEvent"
  • définir un style, obtenir des étiquettes de dates correctes focus plt.rcParams
  • Atelier H : tracé efficace sur données tabulaires : seaborn (pandas et mpl à venir) focus seaborn
Interfaces graphiques (GUI)
  • Un outil complet avec gestion des signaux et internationalisation: QT

  • Lexique
  • Tutographie

  • Pour les contributeurs
  • Sidebar

Menu

Explore Projects Groups Topics Snippets