(Cliquez pour afficher la version PDF)
Une fonction est un bloc d’instructions que l’on peut appeler à tout endroit d’un programme. Elle est particulièrement utile quand une tâche doit être réalisée plusieurs fois par un programme avec seulement des paramètres différents.
Nous avons déjà vu diverses fonctions prédéfinies : print(), input(), range(), len()…
Mais, on peut également créer ses propres fonctions afin d’éviter les répétitions de code et permettre une réutilisation :
La définition d’une fonction se fait à l’aide du mot clé def :
def ma_fonction(): # bloc d’instructions |
Il est possible de définir des paramètres à la fonction. Ce sont les arguments de la fonction :
def maFonction(x,y,z)
Lors de l’appel de la fonction dans le programme principal, chaque paramètre de l’appel correspond dans l’ordre à chaque argument de la définition de la fonction. La correspondance se fait par affectation :
Exemple :
Dans le programme suivant, La fonction table permet d’afficher la table de multiplication d’un nombre. L’argument de la fonction table étant ce nombre :
Résultats dans la fenêtre Python Shell :
Les paramètres de la fonction peuvent être nommés et recevoir des valeurs par défaut. Ils peuvent ainsi être donnés dans le désordre et/ou pas en totalité.
Exemple :
Ajoutons à la fonction table, l’argument max=10 correspondant à la valeur maximale du multiplicateur et donnons une valeur par défaut au nombre à multiplier :
L’appel de la fonction pourra se faire ainsi :
. table(nombre) : la valeur par défaut de max est utilisée
. table(nombre1, nombre2) avec nombre1 le nombre à multiplier et nombre2 la valeur maximale du multiplicateur
. table(nombre1, max=nombre2)
. table(nb=nombre1, max=nombre2)
. table(max=nombre2, nb=nombre1)
. table() : les valeurs par défaut de nb et max sont utilisées
. Fonctions avec return
Les fonctions peuvent retourner une ou plusieurs données à l’aide du mot clé return. A noter qu’une fonction sans return, est plutôt appelée procédure.
Exemple :
De façon à pouvoir utiliser la nouvelle fonction table, nous allons modifier le programme d’affichage des tables de multiplication en créant une fonction permettant de saisir un nombre et qui retourne ce nombre :
Le seul argument de la fonction est le message à afficher lors de la demande de saisie du nombre à l’aide de la fonction input().
Si l’entrée clavier ne correspond pas à un nombre, l’utilisateur en est informé et la demande de saisi d’un nombre est affichée de nouveau.
Si l’entrée clavier est valide, le nombre saisi est retourné par la fonction.
Le programme d’affichage de la table de multiplication souhaitée est alors :
Résultats dans la fenêtre Python Shell :
Remarque :
Les variables à l’intérieur du corps d’une fonction ne sont accessibles qu’à la fonction elle-même. On dit que ces variables sont des variables locales.
Une variable locale peut avoir le même nom qu’une variable du programme principal mais elle reste néanmoins indépendante.
Le contenu des variables locales est inaccessible depuis l’extérieur de la fonction.
Les variables définies à l’extérieur d’une fonction sont des variables globales. Leur contenu est ”visible” de l’intérieur d’une fonction, mais la fonction ne peut pas le modifier.
Pour modifier une variable globale au sein d’une fonction, il faut utiliser l’instruction global. Cette instruction permet d’indiquer quelles sont les variables à traiter globalement :
Résultats dans la fenêtre Python Shell :
. Fonctions lambda
Pour des fonctions très courtes, on peut utiliser des fonctions anonymes, connues aussi sous le nom de fonctions lambda.
Prenons l’exemple d’une fonction retournant la valeur de l’addition de deux nombres :
On peut écrire cette fonction en une seule ligne, avec le mot clé lambda :
A noter cependant qu’avec les fonctions lambda :
. On ne peut les écrire que sur une seule ligne.
. On ne peut pas avoir plus d’une instruction dans la fonction.
Voici le programme permettant d’afficher le résultat de l’addition :
Résultats dans la fenêtre Python Shell :