Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
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é.
Les bonnes pratiques de programmation Python sont proposées dans le cadre du PEP (Python Enchancement Proposal : propositions d'améliorations de Python)
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.
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).
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().
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.
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.
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)
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.
Si les messages dans les fonctions input() & print() sont délimités par des guillemets doubles vous pouvez utiliser les apostrophes dans ces consignes.
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.
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.
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.
Vous vous souvenez du petit programme qui consistait par essais successifs à trouver un entier généré de façon aléatoire.
La fonction retourne le score d'une partie d'où l'instruction : score_partie = unepartie()
Instructions : l'ordinateur produit de façon aléatoire un entier compris entre 1 et 99 Tu dois découvrir cet entier avec le moins d'essais possibles Tu joues 3 fois et ensuite ton score final s'affiche -----------------------------à toi de jouer ---------------------- Saisir un entier inférieur à 100 : 50 50 trop grand * Saisir un entier inférieur à 100 : 30 30 trop grand * Saisir un entier inférieur à 100 : 10 10 trop petit * Saisir un entier inférieur à 100 : 20 Enfin trouvé ; ton score : 7 Saisir un entier inférieur à 100 : 5o Saisir un entier inférieur à 100 : 60 60 trop petit * Saisir un entier inférieur à 100 : ...
Dans le premier jeu, l'entier a été trouvé au quatrième essai donc le score est 7.
Les modules proposés par Python qu'ils soient dans la bibliothèque standard ou dans des librairies externes (ou dépendances) sont nombreux.
Il se peut cependant que vous ne trouviez pas votre bonheur, que vous ayez besoin de créer vos propres fonctions génériques susceptibles
d'être appelés dans différents programmes.
Je n'ai pas trouvé (mais je n'ai pas trop cherché) de fonctions relatives aux cercle et rectangle (périmètre et surface).
J'ai donc crée un fichier "geometrie.py" qui contient deux fonctions personnelles.
Contenu du fichier :
Les commentaires sont très importants dans un module car il feront partie de la documentation sur le module. Pour afficher la documentation sur un module il suffit de taper la commande help(alias).
Enregistrez le fichier "geometrie.py" dans "c:/python39" et pas ailleurs !!!
>>> import geometrie as geom >>> help(geom) Help on module geometrie: NAME geometrie DESCRIPTION Module geometrie qui comprend deux fonctions : cercle() et rectangle() : - cercle() : saisir le rayon lors de l'appel de fonction - rectangle() : saisiri la longueur et la largeur lors de l'appel de fonction ... >>> type(geom) class 'module' >>> type (geom.cercle) class 'function' >>> geom.cercle(50) (314.0, 7850.0) >>> geom.rectangle(50,30) (160, 1500) >>> dir(geom) ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'cercle', 'rectangle']
On manipule ce module personnel comme n'importe quel module.
Vous avez réalisé un superbe programmme de jeu avec Python et vous voulez en faire profiter vos relations.
Problème : pour qu'un programme Python (d'extension .py) fonctionne sur un PC, il faut que la bonne version de Python y soit installée
et si de plus vous faites appel dans ce programme à des bibliothèques tierces, il faut aussi les installer. Bref pour un non informaticien
c'est très compliqué.
Heureusement il existe une bibliothèque externe qui dès qu'elle est installée, permet de produire un programme "standalone" c'est à dire
un programme qui fonctionne sans qu'il soit nécessaire d'installer Python sur le terminal qui va l'utiliser.
Une version "standalone" d'un programme comprend en plus du code, l'exécutable Python et les extensions dont il a besoin.
Concrétement sous Windows, vous obtiendrez un exécutable (fichier. exe)
Pour créer cet exécutable il faut utiliser la bibliothèque pyinstaller.
Pyinstaller est une librairie externe qu'il faut donc installer sur votre ordinateur.
Si vous avez bien assimilé les chapitre précédents de mon tuto, vous vous doutez qu'il faut utiliser l'outil pip. Et bien vous avez raison.
Dans la fenêtre de commandes de windows il suffit donc de taper :
pip install pyinstaller
Maintenant que pyinstaller est installé, vous allez voir que la procédure de création d'un exécutable est simple.
Nous voulons produire un exécutable à partir du programme "nbre_a_trouver_plus.py" (voir plus haut dans ce même chapitre).
Ce programme se trouve dans le répertoire "c:\python_prog".
Il n'y a que deux commandes à saisir :
cd c:\python_prog" pyinstaller –-onefile nbre_a_trouver_plus.py
Il faut sélectionner le répertoire qui contient le programme source.
Attention l'exécution de la deuxième commande peut demander un certain temps ... près d'une minute. Soyez patient.
Le système indique enfin que la fabrication du EXE s'est réalisé avec succès.
Vérifions !
Ouvrons le dossier "C:\python_prog".
Nous constatatons l'existence d'un nouveau sous-dossier "dist" et à l'intérieur de ce sous-dossier un fichier nommé "calculatrice.exe".
Ce fichier pèse près de 7 mégas (alors que le fichier .py ne pèsait que 1 kilo) mais c'est logique puisque l'exécutable comprend
le "runtime" Python.
Double-cliquez sur le fichier .exe
Une fenêtre s'ouvre :
Vous pouvez maintenant adresser cet exécutable à vos connaissances.
Grâce à ce service en ligne il n'est pas nécessaire d'installer quoi que ce soit sur votre PC pour faire fonctionner un programme Python. Il suffit d'avoir un compte Google.
Lancez la plateforme en ligne "Google Colab" : https://colab.research.google.com/?hl=fr (ou tapez "google colab" dans le moteur de recherche).
Cliquez sur le bouton bleu "+Nouveau Notebook".
Dans l'IDLE de Python ouvrez le programme "nombre_a_trouver_plus.py"
Sélectionnez tout le code de ce programme et copiez le dans le nouveau notebook.
Renommez le notebook en "nombre_a_trouver.ipynb" (un notebook a obligatoirement cette extension).
Aperçu du notebook :
Il suffit de produire la commmande Exécution / Tout exécuter pour lancer le programme.
Rendu d'exécution :
À partir de la page d'accueil de Google Colab il est possible d'adresser le programme à vos relations.
Sélectionnez "nbre_a_trouver.ipynb" ; cliquez sur les trois points de suspension verticaux ; dans le menu contextuel choisir "partager" ;
une boite de dialogue s'ouvre pour indiquer les contacts à qui vous allez adresser le fichier.
Je m'adresse le fichier.
Django & Flask sont des frameworks Python qui permettent de produire des applications web écrites en Python.
Les chapitres qui suivent sont consacrés au développement web en Python.
Hébergées sur un serveur web, ces applications sont accessibles par tous via un navigateur et une connexion web.
Je présente entre autres le framwork Flask.
Vous verrez qu'il faut maitriser non seulement Python mais aussi HTML & CSS car parmi les fichiers de l'application il
y aura des "templates" (document HTML) et des feuilles de style CSS.