C16.1 : Portée des variables

Variables globales et locales

Présentation

• Une variable définie dans le programme principal est appelée variable globale.

• Une variable définie dans une fonction est appelée variable locale.

Les variables locales sont supprimées à la fin de l'exécution de la fonction.

Les variables globales ne peuvent pas être modifiées depuis une fonction de façon simple.

Attention aux noms des variables

Un problème se pose lorsque le même nom est donné à une variable locale et à une variable globale.

• Lorsque une variable est appelée dans le programme principal : c'est la variable globale qui est utilisée.

• Lorsque une variable est appelée dans une fonction :

Remarque : Lorsque dans une fonction, une variable globale a été appelée une fois, il n'est plus possible d'utiliser le nom de la variable globale comme variable locale (l'exécution du programme génère une erreur "local variable 'nom_var' referenced before assignment").

Bonne pratique : Ne pas donner à une variable locale un nom déjà utilisé pour une variable globale.

Attention aux noms des paramètres

Bonne pratique : Ne pas donner aux paramètres les mêmes noms que ceux des variables globales.

Application (sur papier)

🖊️ Pour chacun des exemples suivants, et pour chaque ligne qui contient un print, indiquer :

Attention : dans certains cas, le programme peut afficher une erreur !

Exemple 1

def fonc():
    print(val1)
val1 = 4
fonc()

Exemple 2

def fonc():
    val1 = 8
    print(val1)
val1 = 4
fonc()

Exemple 3

def fonc():
    val1 = 8
val1 = 4
fonc()
print(val1)

Exemple 4

def fonc():
    val2 = val1
    print(val2)
val1 = 4
fonc()

Exemple 5

def fonc():
    val2 = val1
val1 = 4
fonc()
print(val2)

Exemple 6

def fonc():
    val1 = 8
    val2 = val1
    print(val2)
val1 = 4
fonc()

Exemple 7

def fonc():
    val2 = val1
    val1 = 8
    print(val1)
val1 = 4
fonc()
Afficher la correction

Exemple 1

val1 est globale.

La valeur affichée est : 4

Exemple 2

val1 est locale à fonc.

La valeur affichée est : 8

Exemple 3

val1 est locale à fonc

La valeur affichée est 4 car le print(val1) est dans le programme principal et fait référence à val1 global.

Exemple 4

val1 est globale et val2 est locale à fonc.

La valeur affichée est : 4

Exemple 5

L'exécution va renvoyer une erreur car val1 est locale à fonc et n'existe plus au moment du print.

Exemple 6

val1 de la ligne 1 est globale.

val1 de la ligne 3 est globale et val2 est locale à fonc.

La valeur affichée est : 8

Exemple 7

La ligne 4 implique que val1 est locale à fonc.

Or à la ligne 3, val1 (en temps que variable locale) n'est pas défini !

L'exécution va renvoyer une erreur.

Outils de débogage (prendre connaissance)

La visualisation des variables dans Thonny

Le point d'arrêt avec Thonny

Le point d'arrêt de Thonny () permet de lancer l'exécution d'un programme jusqu'à une instruction spécifiquement repérer et de visualiser l'état de toutes les variables juste avant que cette instruction ne soit exécutée. Il est ensuite possible d'avancer dans le programme pas à pas.

Méthode à suivre :