Accueil

Traduction

Tutoriel Python - sommaire

Tutoriel Python - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Distribuer vos programmes

Dans ce chapitre je vais vous expliquer comment améliorer vos programmes, comment créer vos propres modules et aussi comment distribuer votre production au profit de la communauté.

De bonnes pratiques

Les bonnes pratiques de programmation Python sont proposées dans le cadre du PEP (Python Enchancement Proposal : propositions d'améliorations de Python)

Indentation

Vous savez qu'un bloc d'instruction appelé par un while OU un if OU un else OU elif doit être décalé par rapport à l'instruction d'appel.

Longueur maximale d'une ligne d'instruction

Une ligne ne doit pas dépasser 79 caractères.
Pour indiquer qu'une instruction n'est pas terminée il faut rajouter en fin de ligne la barre oblique inverse. On peut aussi ouvrir une parenthèse (qui est fermée dans la ligne suivante).

Directives d'importation

Ce qu'il ne faut pas faire

from os import *
from time import *
from datetime import *

La fonction native open() ne sera plus disponible car écrasée par os.open() ; la fonction time.time() n'est plus disponible car écrasée par datetime.time().

Ce qu'il faut faire

import os
import time
import datetime as dt

Utilisez des alias pour les modules ayant un nom très long ou qui doit respecter une certaine casse.
Les importations doivent se trouver en début de programme.

Attention à la casse

Python fait la différence entre majuscule et minuscule. On dit qu'il tient "compte de la casse".
Exemple :

>>> maChaine ="bonjour"
>>> machaine
NameError: name 'machaine' is not defined

Il y a une "exception" (erreur d'exécution) puisque "machaine" (sans C majuscule) n'existe pas.

Nommer les variables et fonctions

Le premier caractère ne peut pas être un chiffre.

Donnez des noms logiques à vos variables. Si une variable sert de compteur appelez la "compteur" ; si elle doit contenir le score d'une partie appelez la "score". Pas de lettre accentuées !

Pour les noms composés utilisez la notation "camelCase" : soudure et emploi d'une majuscule pour la première lettre de chaque mot mais à partir du deuxième mot. Exemples : cumulNotes, totalPoints, etc.
Je rappelle qu'un mot réservé ne peut être employé pour nommer une variable ou fonction.
Pour les variables dont le nom ne comprend qu'un seul caractère il ne faut pas employer : O (o majuscule), l( L minuscule) et I(i majuscule). En effet avec certaines polices le o majuscule peut être confondu avec zéro, le L minuscule avec 1 et I majuscule avec l.

Les constantes doivent être écrites en majuscules avec des traits de soulignement si le mot est composé.
L'initialisation de plusieurs constantes doit se faire avec un tuple. Exemple :

TAUX_REDUIT, TAUX_NORMAL = (5.5, 20) 

Les commentaires

Un commentaire est précédé du symbole # (tout ce qui n'est pas interprété).

Les commentaires peuvent être écrits sur plusieurs lignes à condition d'être encadrés par des guillemets triples (""").
Il en est de même pour les chaines très longues.

Les messages

Si les messages dans les fonctions input() & print() sont délimités par des guillemets doubles vous pouvez utiliser les apostrophes dans ces consignes.

Gérer les erreurs de saisie

Imaginez que vous devez saisir un nombre mais qu'au lieu de cela vous 1oo (au lieu de 100).
L'exécution du programme doit indiquer une "exception" mais de plus permettre à l'utilisateur de resaisir sans qu'il y ait interruption du programme.

Exemple : programme sur le cercle

Le code

Non seulement il y a gestion des exceptions mais de plus l'utilisateur peut resaisir jusqu'à ce que la saisie soit correcte car la gestion des exceptions est comprise dans une boucle infinie.

Le programme est bien structuré : 2 fonctions et un programme principal.
Le programme comprend une boucle infinie qui permet de resaisir après une frappe incorrecte.
Dans la boucle il y a gestion des exceptions ; si la saisie n'est pas un nombre la routine "except:" est exécutée.

Exécution du programme

Saisir le rayon  ou saisir  'fin' : 100 cm
saisie incorrecte ; tapez  une suite de chiffres !
Saisir le rayon  ou saisir  'fin' : 100
Circonférence du cercle :  628.32
Aire du cercle :   31415.93
Le graphique s'affiche dans une autre fenêtre
Saisir le rayon  ou saisir  'fin' : fin
>>> 

La méthode eval() ne peut pas convertir une chaine en nombre qu'à la condition que ladite chaine ait un format numérique (des chiffres et éventuellement un point parmi les chiffres).
Les résultats sont affichés avec un arrondi à l'affichage grâce à une syntaxe particulière aire:5.2f qui signifie 5 chiffres pour la partie entière et 2 pour la partie décimale.

Encore un programme amélioré

Vous vous souvenez du petit programme qui consistait par essais successifs à trouver un entier généré de façon aléatoire.

Le code du programme amélioré

La fonction retourne le score d'une partie d'où l'instruction : score_partie = unepartie()