Notion de bloc- portée d'une variable (2/4)
Définition : Portée
La portée définit la visibilité d'un nom dans un bloc. Si une variable locale est définie dans un bloc, sa portée comprend ce bloc. Si la définition intervient dans le bloc d'une fonction, la portée s'étend à tous les blocs contenus dans celui qui comprend la définition, à moins qu'un bloc intérieur ne définisse une autre liaison pour ce nom.
Exemple : Portée d'une variable dans une fonction
La variable référencée est celle dans le bloc ou si elle n'est pas trouvée dans un bloc de niveau inférieur.
def f1(x):
return x + y
y = 4
print(f1(2))
Le résultat est 6, la variable utilisé dans la fonction f1 est la variable y du programme principal.
def f2(x):
y = 10
return x + y
y = 4
print(" Resultat de f2(2) = ", f2(2))
print("y du progamme = ", y)
Finalement, la règle utilisée par python est l'ajout d'un préfixe à la variable si elle apparaît à gauche du signe = ou dans les paramètres de la fonction:
def f2(f2_x):
f2_y = 10
return f2_x + f2_y
y = 4
print(" Resultat de f1(2) = ", f2(2))
print("y du progamme = ", y)
Les variables y sont clairement différentes. Dans le premier exemple, le script devient :
def f1(f1_x):
return f1_x + y
y = 4
print(f1(2))
Complément : Déclaration d'une variable avec l'attribut global
Déclarer une variable globale dans une fonction se fait en ajoutant le mot clef global
devant le nom de la variable dans la fonction