Création d'un module simple

Test de module

Question

Créer un fichier aires.py avec 3 fonctions, bien documentées, qui retourne l'aire :

  • disque(rayon)

  • rectangle(largeur, longueur)

  • triangle(base, hauteur)

Rajouter des instructions, à base de print, permettant de tester ces 3 fonctions.

Indice

pi pourra être initialisé à 3.14159

On rappelle que l'on peut appeler un module simplement en important le nom du fichier Python, sans l'extension .py. Il faut bien sûr être dans le même dossier utilisateur.

Si j'ai défini un module dans le fichier trucmuche.py (avec des fonctions à l'intérieur), je vais l'appeler dans mon programme principal par l'instruction :

1
import trucmuche

Question

Créer un 2ème programme, appelé programme principal (affiche_aires.py), qui :

  • importe la fonction disque du module aires

  • affiche le résultat avec un rayon de 4

Que se passe-t-il ?

Indice

On peut importer une fonction d'un module en utilisant l’instruction suivante :

1
from nom_module import nom_fonction

Solution

On remarque que l'affichage du seconde programme affiche également le programme principal du programme aires.py ; ce qui n'est pas souhaitable.

Question

Dans aires.py, ajoutez les instructions de tests du module dans la fonction main() et ajoutez l’instruction vue en cours pour n'afficher que ce qui est nécessaire.

Relancer le programme affiche_aires.py et constater la différence.

Merci de lire la solution pour bien comprendre ce qu'il se passe.

Indice

On ajoute le test suivant dans le module, ainsi, la fonction main() n'est exécuté que si on exécuté le module et pas quand il est importé.

1
if __name__ == "__main__":
2
    main()

Solution

Principe

Une variable __name__ est créée automatiquement à l’exécution d'un programme. Cette variable contient le nom du programme courant.

Le nom du programme principal est toujours __main___. Donc la fonction main() est exécutée seulement si le fichier aires.py constitue le programme principal.

Ainsi, si ce dernier est exécuté tout seul, l'affichage est identique à la première question de l'exercice car la variable __name__ a la valeur __main__.

Mais si ce fichier est importé dans un autre fichier, à l’exécution le test __name__ == __main__ n'est pas vérifié et la fonction main n'est pas exécutée.