|
|
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 |