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 ?

Pourquoi Python renvoie-t-il une « UnboundLocalError » lors de la modification d'une variable globale à l'intérieur d'une fonction ?

Linda Hamilton
Libérer: 2024-12-24 16:47:13
original
847 Les gens l'ont consulté

Why Does Python Throw an `UnboundLocalError` When Modifying a Global Variable Inside a Function?

UnboundLocalError : l'affectation de variable a priorité sur la déclaration globale

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal