Programmer en Python en 2nde

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 en classe de 2nde. Un troisième module, nommé turtle est présenté dans un chapitre à part : [La tortue] → [Dessiner avec turtle].

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

Le script correspondant au calcul puis à l'affichage de $\sqrt{25}$ est :


		
		

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 nommées de la même façon mais provenant 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 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. Ici pour le module math.
  • Obtenir la liste des fonctions disponibles dans le module depuis Python :
    
    import math
    
    print(dir(math))
    

    On obtient :

    ['__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']
    
  • Obtenir une documentation sur une fonction depuis Python :
    
    import math
    
    print(help(math.trunc))
    

    On obtient :

    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)