Variable locale référencée avant affectation en Python

Muhammad Waiz Khan 4 décembre 2021
Variable locale référencée avant affectation en Python

Ce tutoriel expliquera pourquoi l’erreur local variable referenced before assignment se produit et comment elle peut être résolue.

La local variable referenced before assignment se produit lorsqu’une variable est référencée avant l’affectation dans le corps d’une fonction. L’erreur se produit généralement lorsque le code tente d’accéder à la variable globale. Comme les variables globales ont une portée globale et sont accessibles de n’importe où dans le programme, l’utilisateur essaie généralement d’utiliser la variable globale dans une fonction.

En Python, nous n’avons pas besoin de déclarer ou d’initialiser la variable avant de l’utiliser; une variable est toujours considérée comme locale par défaut. Par conséquent, lorsque le programme essaie d’accéder à la variable globale au sein d’une fonction sans la spécifier comme globale, le code renverra l’erreur local variable referenced before assignment, puisque la variable référencée est considérée comme une variable locale.

La Solution de l’erreur local variable referenced before assignment en Python

Nous pouvons déclarer la variable comme globale en utilisant le mot-clé global en Python. Une fois la variable déclarée globale, le programme peut accéder à la variable dans une fonction et aucune erreur ne se produira.

L’exemple de code ci-dessous illustre le scénario de code dans lequel le programme se retrouvera avec l’erreur variable locale référencée avant affectation.

count = 10


def myfunc():
    count = count + 1
    print(count)


myfunc()

Production:

UnboundLocalError: local variable 'count' referenced before assignment

Nous devons déclarer la variable count comme globale en utilisant le mot-clé global pour résoudre cette erreur. L’exemple de code ci-dessous montre comment l’erreur peut être résolue en utilisant le mot-clé global dans le scénario de code ci-dessus.

count = 10


def myfunc():
    global count
    count = count + 1
    print(count)


myfunc()

Production:

11