Une variable à laquelle on affecte une valeur dans le corps d'une fonction va exister lors de l'exécution de cette fonction mais disparaît dès que l'on sort de la fonction.
Exemple :
On écrit une fonction qui renvoie True
si l'entier
n
donné en entrée est premier et False
sinon.
Le principe de cette fonction consiste à tester si les entiers inférieurs
ou égaux à la racine de n
sont diviseurs de l'entier.
La fonction détermine donc si l'entier n
est premier mais
détermine également un diviseur propre de l'entier dans le cas non premier.
On aimerait identifier (afficher à l'écran) également ce diviseur.
Testez la tentative suivante :
def est_premier(n):
""" n entier naturel au moins égal à 2. """
d = 2
while d*d <= n :
if n%d == 0 : return False
d += 1
return True
M = 20
prem = est_premier(M)
if not(prem) :
print("{} n'est pas premier.".format(M))
# on aimerait maintenant afficher le diviseur trouvé :
print("Un diviseur : ")
print(d)
La dernière ligne print(d)
provoque l'erreur suivante :
"name 'd' is not defined".
En effet, d
a été défini à l'intérieur de la fonction.
A l'extérieur de la fonction,d
n'existe plus. Il n'est donc
pas possible de récupérer la valeur trouvée pour le diviseur de cette façon.