La programmation est l’art d’apprendre à un ordinateur comment accomplir des tâches qu’il n’était pas capable de réaliser
auparavant. L’une des méthodes les plus intéressantes pour y arriver consiste à ajouter de nouvelles instructions au langage de programmation que vous utilisez, sous la forme de fonctions originales.
Définir une fonction
Les scripts que vous avez écrits jusqu’à présent étaient à chaque fois très courts, car leur objectif était seulement de vous faire assimiler les premiers éléments du langage.
Lorsque vous commencerez à développer de véritables projets, vous serez confrontés à des problèmes souvent forts complexes, et les lignes de programme vont commencer à s’accumuler…
L’approche efficace d’un problème complexe consiste souvent à le décomposer en plusieurs sous-problèmes plus simples qui seront étudiés séparément (ces sous-problèmes peuvent éventuellement être eux-mêmes décomposés à leur tour, et ainsi de suite).
D’autre part, il arrivera souvent qu’une même séquence d’instructions doive être utilisée à plusieurs reprises dans un programme.
Les fonctions
permettent d’éviter de réécrire plusieurs fois les mêmes lignes de code et donc d’avoir un programme plus compact et plus lisible.
Les fonctions et les classes d’objets sont différentes structures de sous-programmes qui ont été imaginées par les concepteurs des langages de haut niveau afin de résoudre les difficultés évoquées ci-dessus.
Nous allons commencer par décrire ici la définition de fonctions sous Python.
Nous avons déjà rencontré diverses fonctions préprogrammées. Voyons à présent comment définir nous-mêmes de nouvelles fonctions originales.
La syntaxe Python pour la définition d’une fonction est la suivante :
def nom_de_la_fonction(paramètres) :
{indentation} Bloc d’instructions**
Vous pouvez choisir n’importe quel nom pour la fonction que vous
créez, à l’exception des mots réservés du langage, et à la condition
de n’utiliser aucun caractère spécial ou accentué (le caractère
souligné » _
» est permis). Comme c’est le cas pour les noms de
variables, il vous est conseillé d’utiliser surtout des lettres
minuscules, notamment au début du nom (les noms commençant par une
majuscule seront réservés aux classes.
Comme les instructions if
et while
que vous connaissez déjà,
l’instruction def
est une instruction composée. La ligne
contenant cette instruction se termine obligatoirement par un double
point
, lequel introduit un bloc d’instructions que vous ne devez
pas oublier d’indenter.
La liste de paramètres
spécifie quelles informations il faudra
fournir en guise d’arguments lorsque l’on voudra utiliser cette
fonction (les parenthèses peuvent parfaitement rester vides si la
fonction ne nécessite pas d’arguments).
Une fonction s’utilise pratiquement comme une instruction quelconque. Dans le corps d’un programme, un appel de fonction est constitué du nom de la fonction suivi de parenthèses. Si c’est nécessaire, on place dans ces parenthèses le ou les arguments que l’on souhaite transmettre à la fonction. Il faudra en principe fournir un argument pour chacun des paramètres spécifiés dans la définition de la fonction, encore qu’il soit possible de définir pour ces paramètres des valeurs par défaut.
programme |
Résultat |
---|---|
# 0501 fonction_multiplication.py # définir une fonction def table(base): n=1 while n<10: print(n,'x',base,'= ',n*base, ' ;') n=n+1 #programme principal base=int(input("Entrer un nombre entier :")) table(base) # appel de la fonction |
Entrer un nombre entier :5 1 x 5 = 5 ; 2 x 5 = 10 ; 3 x 5 = 15 ; 4 x 5 = 20 ; 5 x 5 = 25 ; 6 x 5 = 30 ; 7 x 5 = 35 ; 8 x 5 = 40 ; 9 x 5 = 45 ; |
Pour les puristes, les fonctions que nous avons décrites jusqu’à présent ne sont pas tout à fait des fonctions au sens strict, mais plus exactement des procédures.
Une « vraie » fonction (au sens strict) doit en effet renvoyer une valeur lorsqu’elle se termine.
Une « vraie » fonction peut s’utiliser à la droite du signe égale dans des expressions telles que :
\(\ y\ = \ \sin(\mathbf{a})\).
On comprend aisément que dans cette expression, la fonction \(\mathbf{\sin}\mathbf{()}\) renvoie une valeur (le sinus de l’argument \(\mathbf{a}\mathbf{\ }\)qui est directement affectée à la variable \(y\).
Commençons par des exemples simples :