Dans cette leçon nous allons vous montrer les idées les plus importantes en programmation: définir vos propres fonctions ! Les fonctions permettent à votre programme d'être plus court, mieux organisé, plus facile à lire, plus facile à déverminer et plus réutilisable. Dans les leçons à suivre nous allons voir d'autres avantages tels que la récursivité.
Définir une Fonction
Nous allons commencer avec un exemple. Vous rappelez-vous de la fonction abs
? Elle prend seulement un argument (un nombre x), et retourne sa valeur absolue (qui devient x quand x ≥ 0 et -x quand x < 0). La façon de définir cette fonction dans Python est :
def abs(x): # définit une fonction appelée 'abs' avec un argument appelé 'x' if x >= 0: # le corps de la fonction commence ici return x else: return -x # le corps de la fonction se termine ici(Cliquez ici pour voir ce code dans la console.)
Les Deux Parties de la Définition d'une Fonction
La première ligne dans une définition de fonction spécifie le nom de la fonction et le(s) argument(s) de la fonction. Cela devrait ressembler à ceci :
def «nom-fonction»(«liste-argument»):
Dans l'exemple ci-dessus, abs
était le nom de la fonction et la liste d'argument était x
. C'est appelé la liste d'argument parce qu'il peut avoir plusieurs arguments, par exemple x
, y
, z
. Il est également possible de ne pas avoir d'argument, c.-à-d. une liste vide. Les arguments sont des entrée(s) aux fonctions.
Tout ce qu'il y a après la première ligne d'une définition d'une fonction devient le corps de la fonction. Le corps est un bloc de code indenté. Chaque fois que la fonction est appelée, le corps est exécuté avec les arguments/entrées. Finalement, quand nous atteignons cette ligne dans le corps de la fonction,
return «valeur»la fonction termine son exécution et retourne «valeur» comme sortie. Le retour de valeur est donc la sortie de la fonction. Comme l'exemple
abs
le montre, le corps peut contenir plusieurs déclarations de retour ; mais seulement celle qui sera exécutée en premier aura un effet, car la fonction arrête son exécution par la suite.
Exemple: Définir et Appeler une Fonction
Le programme qui suit contient la définition d'une fonction et certaines autres déclarations qui sont exécutées après que la fonction soit définie.
Nous pouvons voir que le nom de la fonction est carré
, qu'il y a seulement un argument x
et que le corps de la fonction consiste seulement en une ligne de retour x*x
. Puis en dehors de la fonction, on a deux commandes, qui appellent la fonction un total de trois fois.
- Quand la première commande est exécuté, Python doit évaluer
carré(10)
. Python compare la liste d'entrées (10
) à la liste d'argument (x
). Alors, il exécute le corps de la fonctionreturn x*x
tout en se rappelant quex
est égal à10
. Ainsix*x
donne100
, qui est affiché. - Quand la deuxième commande est exécutée, Python doit évaluer
carré(carré(2)).
La partie interne decarré(2)
est évaluée en premier. Nous rendons temporairementx
égale à2
, et on exécute le corps de la fonction, qui retourne4
. Puis l'expression extérieure est évaluée; commecarré(2)
donne4
, nous appelons maintenantcarré(4)
. Cela retourne16
, qui est affiché.
Comme d'habitude, vous voudrez peut-être voir à quoi cela ressemble dans Python3 Visualizer.
Quatre Erreurs les plus Courantes
Une erreur très courante que vous pouvez faire en définissant une fonction est d'oublier la déclaration de retour.
Comme vous pouvez voir, s'il n'y a pas déclaration de return
dans le corps, la fonction donne None
par défaut. Alors, si vous échouez à un exercice, parce qu'une fonction retourne None
, le problème est souvent que quelques entrées de fonction ne provoquent pas l'exécution d'une instruction return
.
Vous pouvez intentionnellement omettre une déclaration de return . Cela a du sens seulement si votre fonction a un effet secondaire autre que la valeur return , par exemple afficher une sortie de fonction:
|
Une autre erreur très courante est d'oublier d'indenter le code, résultant en une erreur de type IndentationError
.
Comme nous avons vu dans leçon 2, un appel avec trop ou trop peu d'arguments provoque une erreur.
Finalement, si vous faites une erreur dans le nom quand vous définissez ou vous appelez la fonction, vous obtiendrez une erreur qui indique que la fonction est indéfinie.
Essayez Vous-Même
Deux ou Plusieurs Arguments
Les fonctions ci-dessus ne prenait qu'un un argument, mais une fonction peut être conçue pour prendre plusieurs arguments. Par exemple, vous avez appelé input
()
avec 0 arguments (et vous allez définir une fonction avec 0 arguments dans leçon 15A).
Voici un exemple sur la géométrie avec deux arguments. Supposez que nous ayons besoin d'une fonction pour calculer l'aire d'une triangle, compte tenu a longueur de sa base base et sa hauteur. La formule pour calculer cette aire est
aire = base × hauteur / 2
En Python, nous pouvons définir un fonction aireTriangle
comme suit :
Comme vous pouvez le voir, le seul changement est que nous avons remplacé def «nom-fonction»(«argument1»)
avec def «nom-fonction»(«argument1», «argument2»)
.
Dans ce dernier exercice nous vous demandons d'écrire votre propre fonction avec deux arguments, pour calculer le périmètre d'une rectangle. (Le périmètre est la longueur total de tous les côtés.) Dans une rectangle avec une largeur et hauteur donnée, la périmètre est donné par la formule qui suit :
périmètre = largeur + hauteur + largeur + hauteur
Fonctions peuvent appeler des fonctions
Les fonctions sont les éléments constitutifs de grands programmes bien bâtis: vous pouvez faire la même tâche deux fois sans l'écrire deux fois et vous pouvez réutiliser les solutions aux tâches communes. Voici un exemple de construction fonction utilisée dans une autre fonction.
Vous êtes maintenant prêt pour la prochaine leçon !