Erreur : "UnboundLocalError : variable locale référencée avant affectation" en Python
Lorsque vous rencontrez cette erreur, c'est parce que vous essayez de accéder à une variable locale avant qu'elle ne soit initialisée ou définie. Explorons le code à l'origine de ce problème :
Var1 = 1 Var2 = 0 def function(): if Var2 == 0 and Var1 > 0: print("Result 1") elif Var2 == 1 and Var1 > 0: print("Result 2") elif Var1 < 1: print("Result 3") Var1 -= 1 function()
Ce code définit deux variables, Var1 et Var2, en dehors de la fonction function(). Au sein de la fonction, nous essayons de manipuler Var1, ce qui est très bien. Cependant, le problème survient lorsque nous accédons à Var1 sans l'initialiser dans le cadre de la fonction.
Solution utilisant des variables globales :
Pour résoudre ce problème, nous pouvons déclarer Var1 comme une variable globale dans la fonction. Cela indique à Python d'utiliser le Var1 défini en dehors de la fonction au lieu de créer une nouvelle variable locale à l'intérieur. Pour y parvenir, ajoutez la ligne suivante au début de la fonction :
global Var1
Solution alternative : utiliser des variables non locales :
Python 3 introduit l'instruction non locale, qui vous permet de modifier une variable définie dans une portée englobante. Au lieu de déclarer Var1 comme variable globale, nous pouvons utiliser le code suivant dans la fonction :
nonlocal Var1 Var1 -= 1
Conclusion :
UnboundLocalError se produit lorsque vous essayez de référencer un variable locale qui n'a pas été initialisée ou définie. Pour résoudre ce problème, vous pouvez soit déclarer la variable comme globale, soit utiliser le mot-clé nonlocal pour accéder à la variable définie dans une portée englobante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!