Chapitre 6 : importer un module

Un module est un fichier Python qui contient un programme que l’on peut exécuter de manière indépendante ou bien qui regroupe des attributs que l’on peut charger dans un programme principal grâce à l’instruction import.

Pour faciliter leur maintenance, la plupart des programmes Python sont constitués d’un code principal sur lequel vient se greffer différents modules importés. Il s’agit soit de modules qui appartiennent à la bibliothèque standard de Python (par exemple le module math) soit de modules écrits par le programmeur lui-même. La bibliothèque standard de Python contient des dizaines de modules.

Amusons-nous à importer des attributs (c’est-à-dire des fonctions ou des variables) du module math. Ce dernier contient par exemple la variable pi qui correspond à la valeur approchée 3.141592653589793.

pie

Si vous voulez calculer le périmètre d’un cercle, vous en aurez besoin. Pour accéder à cette variable, il existe deux méthodes :

1ère méthode d’importation : l’instruction from math import pi

#!/usr/bin/python3
# -*- coding: utf8 -*-

from math import pi #Importation de la constante pi du module math

rayon = 3
perimetre = 2*pi*3
print(perimetre)

L’appel de la fonction print() retourne le résultat 18.84955592153876

Si je n’avais pas pris soin d’importer la constante pi, Python m’aurait retourné cette exception :

NameError: name ‘pi’ is not defined

Comme je l’ai déjà précisé, il y a différentes manières d’importer un module et/ou les variables qu’il contient. Dans le programme qui calcule le périmètre, je n’ai pas importé le module mais seulement la constante pi qui devient alors une variable de mon programme principal.

from math import pi

C’est-à dire que si j’écris print(math), j’obtiens une erreur :

NameError: name ‘math’ is not defined

Tandis que si j’écris print(pi), j’obtiens ceci :

3.141592653589793

C’est donc bien la preuve que j’ai, dans mon programme principal, uniquement la variable pi.

Il est possible d’importer tous les attributs  du module math en utilisant l’astérisque :

from math import *

2ème méthode d’importation : l’instruction import math

#!/usr/bin/python3
# -*- coding: utf8 -*-

import math #importation du module math
rayon = 3
perimetre = 2*math.pi*3
print(perimetre)

Dans cet exemple, j’ai importé le module math qui devient donc une nouvelle variable de mon programme principal mais la constante pi est accessible uniquement en utilisant cette syntaxe : math.pi

En langage Python où tout est objet, le point est un signe d’appartenance. pi est un attribut de l’objet math.

Si j’écris print(math), j’obtiens ce résultat :

<module ‘math’ (built-in)>

Si j’écris print(pi), Python me retourne une exception :

NameError: name ‘pi’ is not defined

Alors que si j’écris print(math.pi), j’accède à la variable pi qui est dans le module math et j’obtiens bien le résultat escompté :

3.141592653589793

La fonction pow (power en anglais)

Prenons un autre exemple, je veux importer la fonction pow du module math. Cette dernière permet d’élever un nombre x à la puissance y:

#!/usr/bin/python3
# -*- coding: utf8 -*-

import math #importation du module math
nombre = 3
resultat = math.pow(nombre, 4)
print(resultat)

Dans cet exemple, j’ai élevé le nombre trois à la puissance 4. Pour ce faire, j’ai passé deux paramètres à la fonction pow :

  • la variable nombre (3)
  • la puissance (4)

Le résultat obtenu est 81.

La fonction sqrt()

sqrt() permet de calculer la racine carré du nombre passé en argument :

import math #importation du module math
nombre = 36
resultat = math.sqrt(36)
print(resultat)

Le résultat obtenu est 6.

Utiliser dir() pour afficher tous les attributs d’un module

Si je souhaite afficher tous les attributs du module math, il me suffit d’utiliser la fonction dir (bien sûr après avoit chargé le module math!).

import math
print(dir(math))

Résultat :

dir_math

Le module webbrowser (navigateur)

Comme je l’ai écrit plus haut, la bibliothèque standard Python contient des dizaines de modules. Outre le module math, on trouve également le module webbrowser. Ce dernier contient la fonction open(url, new  = 0, autoraise = true).

#!/usr/bin/python3
# -*- coding: utf8 -*-

import webbrowser
webbrowser.open("https://fr.wikipedia.org")

Ce code provoque l’ouverture de la page wikipédia dans le navigateur défini par défaut. Pour ce faire, j’ai passé l’url de la page en argument à la fonction open() sous la forme d’une chaîne de caractères.

wikipedia

Importer un programme en tant que module dans une autre application

Un module peut aussi être un programme que l’on peut lancer en tant qu’application principale ou bien que l’on peut charger dans un autre programme plus important. Voici un exemple très concret :

miagxardeno

J’ai créé un programme qui s’appelle Mia ĝardeno. C’est de l’espéranto et ça signifie mon jardin en français. Il y a plusieurs onglets qui ouvrent notamment un agenda, un calendrier et un logiciel de post-it. J’ai créé moi-même ces trois applications que je peux lancer de façon tout à fait indépendante ou que je peux inclure dans un autre programme. C’est le cas ici : Je les ai importées dans mon application Mia ĝardeno (ligne 7, 8 et 9).

#!/usr/bin/python3
# -*- coding: utf8 -*-
from tkinter import* # Importation du module tkinter
from module_globs import Globales # Importation du module de redimensionnement
import os # Fonctions basiques du système d'exploitation
from PIL import Image, ImageTk # Module PIL (traitement des images importées)
from calendrier_perpetuel import Calendar
from agenda_perpetuel import Agenda_perpetuel
from module_notes import Notes

L’instruction if __name__ == « __main__ »:

Pour déterminer si l’application « post-it » doit être lancée en tant que programme principal ou bien importée en tant que module dans un autre programme, j’utilise l’instruction:

if __name__ == « __main__ »:

Cette instruction se trouve à la fin du code du logiciel de post-it :


# PROGRAMME PRINCIPAL:

if __name__ == "__main__":

note = Notes() # Création de l'objet note par instanciation de la classe Notes.
note.notes() # Appel de la méthode notes.

Conclusion

L’importation de modules est une opération très courante en Python. Elle permet de faire appel au fonctions présentes dans la bibliothèque standard du langage qu’une communauté de développeurs ne cesse d’enrichir. Elle permet également d’importer des applications en tant que modules dans d’autres programmes.