Maison >développement back-end >Tutoriel Python >Pourquoi Python renvoie-t-il une « UnboundLocalError » lors de la modification d'une variable globale à l'intérieur d'une fonction ?
Lorsque vous rencontrez une UnboundLocalError en Python, il est crucial de comprendre la priorité des affectations de variables sur les déclarations globales. Entrons dans les détails à l'aide du code fourni :
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1 test()
Avant d'explorer l'erreur, abordons les impressions réussies de « a » et « b ». Pour ces variables, il n'y a aucune affectation dans la fonction 'test()', donc Python les traite comme des variables globales et récupère leurs valeurs de la portée externe.
Cependant, lors de l'attribution d'une valeur à 'c' dans la fonction (« c = 1 »), Python crée une variable locale nommée « c ». Cette variable locale éclipse le « c » global, et toute référence ultérieure à « c » dans la fonction fera référence à la version locale. Par conséquent, lorsque la ligne 'print(c)' est exécutée, elle tente d'imprimer la variable locale non attribuée, ce qui entraîne 'UnboundLocalError'.
Pour résoudre ce problème, on peut déclarer explicitement l'utilisation de la variable globale Variable 'c' dans la fonction 'test()' en ajoutant 'global c' comme première ligne. Alternativement, dans Python 3, « nonlocal c » peut être utilisé pour accéder à la portée de fonction englobante la plus proche qui contient une variable nommée « c ».
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!