L’utilisation d’arguments permet donc de communiquer des informations depuis le programme principal vers une fonction. Mais on peut aussi avoir besoin de communiquer des informations dans l’autre sens : depuis une fonction, vers le programme principal.
Imaginons que nous ayons besoin de compter le nombre de a
dans une chaîne de caractères donnée. Le script à écrire pour cela est
le suivant :
n = 0
for i in range(0, len(s)):
if s[i] == "a":
n = n + 1
Ici, l'instruction d'entrée demandant à l'utilisateur de saisir une chaîne de caractères et l'instruction de sortie affichant
le nombre de a
(la variable n
) ne sont pas implémentées.
Si l’on veut que le programme principal puisse non seulement communiquer la chaîne de caractères s
à la fonction mais aussi récupérer
la valeur de n
calculée par la fonction, alors nous serons menés à écrire le script suivant :
def NombreDea(s):
n = 0
for i in range(0, len(s)):
if s[i] == "a":
n = n + 1
return n
L’exécution de l’instruction return n
a pour effet d’interrompre l’exécution du corps de la fonction et de renvoyer la valeur de
l’expression n
au programme principal.
Cette valeur produite par la fonction à partir de ses arguments s’appelle valeur de retour.
Et cette valeur de retour est exploitable dans le programme principal comme dans l’exemple ci-dessous (ce qui nous donne désormais le programme complet répondant à notre consigne) :
def NombreDea(s):
n = 0
for i in range(0, len(s)):
if s[i] == "a":
n = n + 1
return n
s = input("Saisir le mot de votre choix : ")
x = NombreDea(s) #A NombreDea(s) est associé la valeur de la variable n
if x <= 2:
print("Il n'y a que ",x,"a dans votre mot : c'est peu")
elif x > 2:
print("Il y a ",x,"a dans votre mot : c'est beaucoup")
Sans la valeur de retour n
située dans le corps de la fonction NombreDea
, l’affectation de la variable x
dans le
programme principale générerait une erreur.