Fonctions
Principe
En programmation, une fonction réalise un traitement à partir de variables d'entrées (arguments) puis renvoie le résultat de ce traitement.
Avertissement
Une fonction peut admettre aucun, un ou plusieurs arguments.
Fonction à un argument
La fonction ci-dessous calcule la surface de l'aire d'un carré de côté a.
def aire_carre(a) :
aire = a*a
return aire
Le mot clé
defest toujours utilisé pour définir une fonction.Ici
aire_carreest le nom (identifiant) de la fonction.La variable
aest un paramètre (ou argument) de la fonction.Après le caractère
:toutes instructions appartenant à la fonction doivent-être indentées.Le mot clé
returnest utilisé pour renvoyer le résultat de la fonction.
>>> %Run
>>> aire_carre(5)
25
L'exécution du script est indispensable avant l'appel de la fonction.
Les parenthèse sont obligatoires afin de préciser l'argument lors de l'appel de la fonction.
Fonction à deux arguments
Considérons maintenant une fonction qui retourne la surface de l'aire d'un rectangle de longueur L et de largeur l.
def aire_rectangle(L, l):
aire = L*l
return aire
Ici la fonction prend 2 arguments
letL!
>>> %Run
>>> aire_rectangle(5, 4)
20
La variable intermédiaire aire n'est indispensable. L'écriture de la fonction peut se simplifier comme suit :
def aire_rectangle(L, l):
return L*l
Exemple : énergie mécanique
La fonction ci-dessous calcule une énergie potentielle de pesanteur.
def Epp(m, h):
return m*9.81*h
Les variables
methsont locales. Elles n'existent que dans la fonction !
>>> %Run
>>> Epp(50,10)
4905.0
Il est possible de calculer l'énergie mécanique à partir des fonctions donnant l'énergie potentielle et l'énergie cinétique.
def Epp(m, h):
return m*9.81*h
def Ec(m, v):
return 0.5*m*v**2
def Em(m, h, v):
return Epp(m, h) + Ec(m, v)
La fonction
Em()fait bien appel aux deux autres fonctionsEpp()etEc()!
>>> %Run
>>> Epp(50, 10)
4905.0
>>> Ec(50, 13)
4225.0
>>> Em(50, 10, 13)
9130.0
>>> m
Traceback (most recent call last):
...
NameError: name 'm' is not defined
Pour chaque fonction, la variable
mn'est pas la même. C'est toujours une variable locale de la fonction considérée. Elle n'est d'ailleurs pas accessible dans le programme principal !
Exercices d'application