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é def est toujours utilisé pour définir une fonction.

  • Ici aire_carre est le nom (identifiant) de la fonction.

  • La variable a est 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é return est 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 l et L !

>>> %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 m et h sont 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 fonctions Epp() et Ec() !

>>> %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 m n'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

Exercice 9 (dilution)