Vous avez déjà rencontré des fonctionsintégrées au langage lui-même, comme la fonctionlen(), par exemple, qui permet de connaître la longueur d'une chaîne de caractères. Les fonctions intégrées au langage sont relativement peu nombreuses : ce sont seulement celles qui sont susceptibles d'être utilisées très fréquemment. Les autres sont regroupées dans des fichiers séparés que l'on appelle desmodules.
Les modules sont donc des fichiers qui regroupent des ensembles de fonctions. En effet, il peut être commode de découper un programme important en plusieurs fichiers de taille modeste pour en faciliter la maintenance et le travail collectif. Une application Python typique sera alors constituée d'un programme principal accompagné de un ou plusieurs modules contenant chacun les définitions d'un certain nombre de fonctions accessoires.
Il existe un grand nombre de modules pré-programmés qui sont fournis d'office avec Python. Vous pouvez en trouver d'autres chez divers fournisseurs. Souvent on essaie de regrouper dans un même module des ensembles de fonctions apparentées que l'on appelle desbibliothèques.
Un module peut être appelé depuis plusieurs programmes, il s'agit d'un fichier .py commençant par son identité (qui ne contient pas de point).
N'importe quel fichier .py peut donc être appelé depuis un autre comme un module[1]. Il peut contenir :
Pour utiliser des fonctions de modules dans un programme, il faut au début du fichier importer ceux-ci.
Pour ce faire, utiliser la commande "import" :
importosimportcodecs
Sur la même ligne (syntaxe déconseillée[2]) :
importos,codecs
Ou encore en sélectionnant certains ou tous les éléments d'un fichier :
frompywikibotimport*
À noter : cette dernière méthode est dangereuse, car des objets du module portant le même nom que des objets du programme peuvent s'écraser l'un l'autre. Mieux vaut donc les nommer explicitement :
frompywikibotimportpagegenerators
Le modulemath, par exemple, est fournit avec Python, et contient les définitions de nombreuses fonctions mathématiques telles quesinus,cosinus,tangente,racine carrée, etc. Pour pouvoir utiliser ces fonctions, il vous suffit d'incorporer la ligne suivante au début de votre script :
frommathimport*
Dans le corps du script lui-même, vous écrirez par exemple :
racine = sqrt(nombre) pour assigner à la variable "racine" la racine carrée de nombre,sinusx = sin(angle) pour assigner à la variable "sinusx" le sinus de angle (en radians !), etc.
Pour créer son propre module et l'importer dans un autre fichier, il faut :
importFichier1Fichier1.fonction1()
Pour changer le préfixe :
importFichier1asF1F1.fonction1()
Pour supprimer le préfixe :
fromFichier1import*fonction1()
__init__.py joutant le rôle de relais en important tous fichiers situés à côté de lui, ce qui permettra à toutes les fonctions de ce dossier d'être accessibles par le nom du dossier. Exemple dans un dossier "lib" :fromFichier1import*fromFichier2import*fromFichier3import*__all__=["Fichier1","Fichier2","Fichier3"]
Dans le dossier parent :
importlibfonction1()
Les modules standards les plus importants sont[3] :
# Démo : utilisation des fonctions du module <math>frommathimport*nombre=121angle=pi/6# soit 30° (la bibliothèque math inclut aussi la définition de pi)print'racine carrée de',nombre,'=',sqrt(nombre)print'sinus de',angle,'radians','=',sin(angle)
L'exécution de ce script provoque l'affichage suivant :
racine carrée de 121 = 11.0sinus de 0.523598775598 radians = 0.5
Ce court exemple illustre déjà fort bien quelques caractéristiques importantes des fonctions :
sqrt()sqrt(121)11.0Nous allons développer tout ceci dans les pages suivantes. Veuillez noter au passage que les fonctions mathématiques utilisées ici ne représentent qu'un tout premier exemple. Un simple coup d'œil dans la documentation des bibliothèques Python vous permettra de constater que de très nombreuses fonctions sont d'ores et déjà disponibles pour réaliser une multitude de tâches, y compris des algorithmes mathématiques très complexes (Python est couramment utilisé dans les universités pour la résolution de problèmes scientifiques de haut niveau). Il est donc hors de question de fournir ici une liste détaillée. Une telle liste est aisément accessible dans le système d'aide de Python :
Au chapitre suivant, nous apprendrons comment créer nous-mêmes de nouvelles fonctions.
Exercices
raw_input() pour l'entrée des données)Veuillez entrer une valeur : 25Veuillez entrer une valeur : 18Veuillez entrer une valeur : 6284Veuillez entrer une valeur :[25, 18, 6284]
Solution
# Conversion de miles/heure en km/h et m/sprint"Veuillez entrer le nombre de miles parcourus en une heure : ",ch=raw_input()# en général préférable à input()mph=float(ch)# conversion de la chaîne entrée en nombre réelmps=mph*1609/3600# conversion en mètres par secondekmph=mph*1.609# conversion en km/h# affichage :printmph,"miles/heure =",kmph,"km/h, ou encore",mps,"m/s"
# Périmètre et Aire d'un triangle quelconquefrommathimportsqrtprint"Veuillez entrer le côté a : "a=float(raw_input())print"Veuillez entrer le côté b : "b=float(raw_input())print"Veuillez entrer le côté c : "c=float(raw_input())d=(a+b+c)/2# demi-périmètres=sqrt(d*(d-a)*(d-b)*(d-c))# aire (suivant formule)print"Longueur des côtés =",a,b,cprint"Périmètre =",d*2,"Aire =",s
# Entrée d'éléments dans une listett=[]# Liste à compléter (vide au départ)ch="start"# valeur quelconque (mais non nulle)whilech!="":print"Veuillez entrer une valeur : "ch=raw_input()ifch!="":tt.append(float(ch))# variante : tt.append(ch)# affichage de la liste :printtt