Python : Les fonctions & modules
Introduction
Les fonctions permettent de regrouper plusieurs instructions dans un bloc qui sera appelé par un nom.
Création de fonctions
Nomenclature
1 2 | def nomDeLaFonction(parametre1, parametre2, parametreN): # Bloc d'instructions |
Avec:
- def : Abréviation de “define” (« définir », en anglais), prélude à toute construction de fonctions
- Une fonction se nomme exactement comme une variable
- Ne pas utiliser un nom de fonction ou variable déjà existante (noms uniques)
- Les paramètres sont séparés par des virgules
- La liste des paramètres est encadrée par des parenthèses
- Les parenthèses sont OBLIGATOIRES même s’il n’y a pas de paramètres
- Toujours et encore “:” pour clôturer la ligne
Exemple: La table de 7
1 2 3 4 5 6 7 8 | # Definition de la fonction def tableDe7(): # Instruction de la fonction nbr = 7 for i in range(11): print "%i * %i = %i" % (i, nbr, i*nbr) # Appel de la fonction tableDe7() |
1 * 7 = 7
2 * 7 = 14
3 * 7 = 21
4 * 7 = 28
5 * 7 = 35
6 * 7 = 42
7 * 7 = 49
8 * 7 = 56
9 * 7 = 63
10 * 7 = 70
Les paramètres
1 2 3 4 5 6 7 | # Definition de la fonction avec 1 parametre def table(nbr): # Instruction de la fonction for i in range(11): print "%i * %i = %i" % (i, nbr, i*nbr) # Appel de la fonction avec comme parametre "8" table(8) |
1 2 3 4 5 6 7 | # Definition de la fonction avec 2 parametres def table(nbr, limite): # Instruction de la fonction for i in range(limite + 1): print "%i * %i = %i" % (i, nbr, i*nbr) # Appel de la fonction avec comme parametre "8" et "20" table(8, 20) |
Valeur par défaut des paramètres
Il est possible de préciser une valeur par défaut pour les paramètres d’une fonction.
1 2 3 4 5 6 7 | # Definition de la fonction avec 1 OU 2 parametres def table(nbr, limite=10): # Instruction de la fonction for i in range(limite + 1): print "%i * %i = %i" % (i, nbr, i*nbr) # Appel de la fonction avec comme parametre uniquement "8" table(8) |
Il est ici possible d’appeler la fonctions de 2 façon:
- Soit en précisant le numéro de la table ET le nombre limite : table(8, 20)
- Soit en ne précisant QUE le numéro de la table : table(8)
Dans ce dernier cas, la limite sera par défaut égale à 10 comme définit dans la déclaration de la fonction.
Utilisation du nom des paramètres
Il est également possible d’appeler les paramètres par leur nom.
Ceci est notamment utile pour une fonction comptant un certain nombre de paramètres qui ont tous une valeur par défaut ou, moins couramment, sans valeur par défaut.
1 2 3 4 5 | def maFonction(a=10, b="Bonjour", c=20): print b, a, c maFonction(c=8, b="Hello", a=3) maFonction(a=5, c=30) maFonction() |
Dans ce cas, peu importe le nombre de paramètres et l’ordre dans lequel vous les appelez.
L’instruction “return »
Il existe des fonctions comme print qui ne “renvoient” rien et des fonctions telles que input ou type qui renvoient une valeur.
Vous pouvez capturer cette valeur en plaçant une variable devant.
1 | resultat= maFonction(variable) |
Les fonctions travaillent généralement sur des données et renvoient le résultat obtenu via un “return”.
1 2 3 4 5 | def maFonction(variable): calcul = (variable * variable) + 12 return calcul # On retourne le resultat du calcul resultat = maFonction(5) # Reception de ce qui est envoye via le return de la fonction et stockage dans une variable print resultat # Affichage du resultat |
Les modules
Il s’agit d’un “bout de code que l’on a enfermé dans un fichier” regroupant un ensemble de fonctions et variables ayant (idéalement) toutes un rapport entre elles.
Si l’on veut travailler avec les fonctionnalités prévues par le module, il n’y a qu’à importer le module.
Il existe un grand nombre de modules disponibles sans qu’il soit nécessaire d’installer de bibliothèques supplémentaires.
Exemple de module intégré à Python
- os : fonctions relatives au système d’exploitation
- time : fonctions relatives au temps
- math : fonctions mathématiques
- …
La méthode “import”
Lorsque l’on ouvre un interpréteur Python, les fonctionnalités des modules ne sont pas incluses.
C’est à vous, programmeur, de penser à importer les modules dont vous aurez besoin.
1 2 | import math # Import de toutes les fonctions du module "math" dans un nouvel espace de nom "math" print math.sqrt(16) # Appel de la fonction "sqrt()" de l'espace de nom "math" |
1 2 | from math import sqrt # Import de la fonction "sqrt()" du module "math" print sqrt(16) # Appel de la fonction "sqrt()" |
1 2 | from math import * # Import de toutes les fonctions du module, sans espace de nom print sqrt(16) # Appel de la fonction "sqrt()" |
Comment connaître la liste des fonctions d’un module ?
1 | help("math.sqrt") |
math.sqrt = sqrt(...)
sqrt(x)
Return the square root of x.
En résumé
- Une fonction est une portion de code contenant des instructions que l’on va pouvoir réutiliser facilement.
- Découper son programme en fonctions permet une meilleure organisation.
- Les fonctions peuvent recevoir des informations en entrée et renvoyer une ou plusieurs informations grâce au mot clé return.
- Les fonctions se définissent de la façon suivante:
def nomDeLaFonction(param1, param2, paramN): - Les modules servent à regrouper des fonctions et variables ayant un lien entre elles.
- Les modules s’importent de la façon suivante:
import nomDuModule
Cours basé sur les travaux de Vincent Le Goff