Python en mathématiques - Niveau 1

Les modules

Certaines fonctions Python ne sont pas disponibles directement mais demandent de faire appel à un module. Un module peut-être vu comme une bibliothèque contenant des fonctions supplémentaires déjà programmées.

Nous présentons ci-dessous les modules math et random qui se révèleront très utiles pour l'algorithmique et la programmation au Lycée.

Le module math

Comme son nom l'indique, ce module contient les définitions des fonctions et constantes usuelles de mathématiques.

  • racine carrée : sqrt()
  • logarithme népérien : log()
  • $\pi$ : pi
  • etc...

Faire appel juste aux fonctions nécessaires

La fonction racine carrée sqrt() se trouve dans le module math. Cependant, taper directement sqrt(25) dans la console conduit à une erreur :

>>> sqrt (25)

NameError: name 'sqrt' is not defined
	

Pour l'utiliser, il faut :

  • importer le module math dans le script en cours (généralement au tout début du script) ;
  • puis nommer les fonctions que l'on souhaite importer (ici il n'y en a qu'une, mais il est possible d'en importer plusieurs en séparant leur nom par des virgules).

Voici comment obtenir $\sqrt{25}$ dans la console :

>>> from math import sqrt

>>> sqrt (25)
5.0
	

Dans un script, il est (très fortement) conseillé d'importer les modules nécessaires dès les premières lignes :


		
		

Importer d'un coup toutes les fonctions

Dans ce cas on remplace le nom de fonctions importées par l'étoile * :


		
		
  • Pour aller plus loin Plus tard !
  • Les alias Plus tard !

On peut aussi choisir d'importer le module comme suit :


		
		

Dans ce cas, chaque fonction doit être préfixée par le nom du module : math.sqrt() au lieu de sqrt() tout court dans les importations précédentes.

L'intérêt de ce choix est de pouvoir disposer de deux fonctions qui ont le même nom mais qui proviennent de deux modules différents (cela arrive assez vite). Imaginez en effet que les modules A et B contiennent tous les deux une fonction nommée scrogneugneu(). Dans ce premier code :


from A import scrogneugneu
from B import scrogneugneu
	

comme dans le suivant :


from A import *
from B import *
	

seule la seconde fonction scrogneugneu() (celle du paquet B) pourra être utilisée. Elle est en effet chargée après celle du paquet A, sa définition écrase donc la précédente.

Tandis que le script suivant utilisera bien les deux fonctions distinctes :


import A
import B

# utilisation de la fonction scrogneugneu() du paquet A 
# par A.scrogneugneu()

# utilisation de la fonction scrogneugneu() du paquet B 
# par B.scrogneugneu()
	

Certains noms de modules sont un peu longs et devoir préfixer chaque fonction du module par le nom du module est alors un peu pénible.

Pour remédier à cela, on peut utiliser un alias. Par exemple, ci-dessous on déclare m comme alias du module math :


					
					

Le module random

Le module random contient des fonctions qui génèrent du pseudo-aléatoire. Exécutez et modifiez plusieurs fois le programme ci-dessous afin de bien saisir les résultats obtenus par deux d'entre elles :


			
			

Connaître le contenu d'un module

  • Consulter la documentation en ligne. Par exemple, ici pour le module math.
  • La fonction dir() appliquée au nom d'un module importé permet d'obtenir la liste des fonctions disponibles dans ce module depuis la console Python :
    >>> import math
    
    >>> dir(math)
    ['__doc__', '__loader__', '__name__', '__package__',
    '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
    'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh',
    'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs',
    'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma',
    'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
    'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p',
    'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin',
    'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
    
  • La fonction help() appliquée au nom d'une fonction permet d'obtenir sa documentation dans la console Python.
    Par exemple, avec la fonction trunc() du module math :
    >>> from math import *
    
    >>> help(trunc)
    Help on built-in function trunc in module math:
    
    trunc(...)
        trunc(x:Real) -> Integral
        
        Truncates x to the nearest Integral toward 0.
    	Uses the __trunc__ magic method.
    (END)