6. Importer un module (Python)

Sommaire

  1. Méthode d’importation avec from … import …
  2. Méthode d’importation avec import
  3. La fonction pow()
  4. La fonction sqrt()
  5. Afficher tous les attributs d’un module
  6. Le module webbrowser (navigateur)
  7. Importer un programme en tant que module dans une autre application

Un module est un fichier Python contenant un programme que l’on peut exécuter de manière indépendante ou bien regroupant 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. 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. méthode d’importation avec from … import …

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

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

rayon = 3
perimetre = 2*pi*3
print(perimetre)
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 que celui-ci contient. Dans le programme qui calcule le périmètre, je n’ai pas importé le module tout entier 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. méthode d’importation avec import

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

# importation du module math
import 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

3. La fonction pow()

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/env python3
# -*- coding: utf8 -*-

import math

number = int(input("Choisissez un nombre: "))
power = int(input("Choisissez une puissance: "))
print(math.pow(number, power))

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

  • la valeur stockée dans la variable number (4)
  • la valeur stockée dans la variable power (5)
1024.0

4. La fonction sqrt()

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

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

import math

number = 36
result = math.sqrt(number)
print(result)
6.0

5. 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().

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

import math
print(dir(math))
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

6. Le module webbrowser (navigateur)

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

#!/usr/bin/env 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.

7. 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

Il y a quelques années, je m’étais amusé à créer une application pour le jardinage. Elle était constituée de plusieurs modules. Outre le module principal dédié au jardin, on trouvait également un agenda, un calendrier et un logiciel de post-it. Je pouvais lancer ces différents modules de façon tout à fait indépendante ou les amalgamer. Nous verrons cela plus en détail dans un prochain chapitre.

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

from calendrier import Calendrier
from agenda import Agenda
from notes import 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. Elle permet également d’embarquer des applications en tant que modules dans d’autres programmes.

Source de l’image d’en-tête

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s