16. Réutiliser - import

Le mot-clé import permet d’importer un module déjà prêt à utiliser. Vous pouvez vous-même créer des modules avec des fonctions utiles que vous pouvez réutiliser dans vos projets, ou partager avec d’autres personnes.

Pour qu’un module soit utile il faut :

  • bien le documenter

  • bien le tester

  • le rendre le plus général possible

16.1. Le nom d’un module

Dans Python, la variable spéciale __name__ designe le nom du module (fichier code) actuel.

  • si le module est executé comme programme principale, cette variable est égale à '__main__'

  • si le module est importé par un autre programe, cette variable est égale au nom du module.

Exercice 1

Téléchargez les deux fichiers et exécutez les. Que constatez-vous ?

Quand vous executé mymodule vous devrez obtenir

__main__
test de mymodule

Quand vous executé main qui importe mymodule vous devrez obtenir

mymodule
__main__
test de main

Vous constatez que :

  • la partie test est seulement executé quand le fichier est exécuté comme principal

  • le nom du module est alors '__main__'

  • quand le module est importé, __name__ est égale au nom du fichier

  • la partie test n’est pas exécuté

16.2. PixelArt

Le module pixelart definit deux fonctions. La structure du fichier est:

  • docstring qui explique le module

  • définition des fonctions

  • test des fonctions

Vous constaterez que:

  • seulement 25% des lignes constitutent du code util

  • 25% (autant que le code) constitue de la documentation

  • 50% (la moitié) sert à tester le code

16.3. Docstring

Le docstring au début du module et dans chaque fonction est utilisé par Python pour produire la documetation help. Un docstring est une chaîne de caractères multiligne, entourés de triples guillemets doubles (""").

Documenter un module

La documentation pour un module est le premier élément du fichier code. Il a la forme suivante:

"""
Description en une ligne
    (ligne vide)
Explication détaillée du module en plusieurs lignes
"""

Documenter une fonction

Le docstring pour une fonction suit immédiatement la ligne de définition de fonction. Il explique en une ligne l’essentiel de ce que fait la fonction. Il explique ensuite la signification de chaque argument. Le nom de l’argument et son explication sont séparé par --.

"""Description en une ligne
    (ligne vide)
Arguments:
d -- explication de l'argument d
e -- explication de ...
"""

Afficher Help

La fonction help(module) dans la console permet d’afficher la documentation sur un module

Exercice 2

Téléchargez le module pixelart exécutez le code suivant dans la console.

import pixelart
help(pixelart)

Vous devriez obtenir ceci.

Help on module pixelart:

NAME
    pixelart - Dessine des images PixelArt

DESCRIPTION
    Ce module definit les fonctions:
    - pixel(d, w, pen, fill)
    - pixelart(image, palette, d, w, pen):

FUNCTIONS
    pixel(d, w=1, pen='black', fill=None)
        Dessine un carré de taille d.
        
        Arguments:
        d -- dimension d'un pixel
        w -- epaisseur de ligne (1)
        pen -- couleur de ligne (black)
        fill -- couleur de remplissage (None)
    
    pixelart(image, palette, d=20, w=1, pen='black')
        Dessine une image avec des pixels.
        
        Arguments:
        image -- tableau 2D avec les indices des couleurs
        palette -- table contenant les couleurs
        d -- dimension d'un pixel (20)
        w -- épaisseur de ligne (1)
        pen -- couleur de ligne ('black')

16.4. Ligne polygonale

Une fonction puissante peut être très compacte, si bien réfléchie. La fonction polyline() comporte 11 paramètres, pourtant la définition de la fonctions contient seulement 28 lignes de code.

16.5. Formes