Notion de bloc- portée d'une variable (2/4)

DéfinitionPorté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.

ExemplePorté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.

1
def f1(x):
2
    return x + y
3
4
y = 4 
5
print(f1(2))
6
7

Le résultat est 6, la variable utilisé dans la fonction f1 est la variable y du programme principal.

1
def f2(x):
2
    y = 10
3
    return x + y
4
5
y = 4
6
print(" Resultat de f2(2) = ", f2(2))
7
print("y du progamme = ", y)

Dans le script précédent, la variable y utilisée dans la fonction f2 est la variable définie dans le corps de la fonction f2. La variable y du programme principal n'est pas modifiée par l'appel de f2. Les deux noms sont indépendants

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:

1
def f2(f2_x):
2
    f2_y = 10
3
    return f2_x + f2_y
4
5
y = 4
6
print(" Resultat de f1(2) = ", f2(2))
7
print("y du progamme = ", y)

Les variables y sont clairement différentes. Dans le premier exemple, le script devient :

1
def f1(f1_x):
2
    return f1_x + y
3
4
y = 4
5
print(f1(2))

ComplémentDé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

Exempleutilisation de global

La variable y est ici déclarer comme globale ; le changement de la valeur de y dans la fonction se répercute dans le programme principal.

1
def f2(x):
2
    global y
3
    y = 10
4
    return x + y
5
6
y = 4
7
print(" Resultat de f2(2) = ", f2(2))
8
print("y du progamme = ", y)