Maison >développement back-end >Tutoriel Python >Pourquoi Python renvoie-t-il une UnboundLocalError ?
En Python, la liaison de variable détermine la portée et la durée de vie des variables. Lorsqu’aucune valeur n’est attribuée à un nom, il est considéré comme non lié. Cela peut conduire à l'exception UnboundLocalError.
Comprendre les variables locales non liées
Contrairement aux langages avec des déclarations explicites, Python permet l'affectation de variables n'importe où dans un bloc. Cependant, si un nom dans une fonction est utilisé avant son attribution, une UnboundLocalError est levée. Cela se produit car le compilateur ne peut pas déterminer la valeur de la variable puisqu'elle n'a pas encore été liée.
Exemple : Code qui provoque UnboundLocalError
Considérez le code suivant :
def foo(): if False: spam = 'eggs' print(spam) foo()
Ce code génère une UnboundLocalError car la variable spam est utilisée dans l'impression déclaration sans avoir été assignée au préalable. Même si l'instruction if vérifie une condition, elle n'exécute pas la mission, laissant le spam non lié.
Opérations de liaison en Python
Les variables sont liées via diverses opérations :
Lorsqu'un nom est lié dans une portée , comme une fonction, elle devient une variable locale. Cependant, l'utilisation de l'instruction globale (ou nonlocale dans Python 3) déclare explicitement un nom comme global, ce qui permet de le référencer et de le modifier depuis l'extérieur de la portée.
Prévenir UnboundLocalError
Pour éviter UnboundLocalError, assurez-vous que les variables sont correctement liées avant d'être utilisées. Cela peut être fait en :
Références :
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!