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'instruction d'impression sans avoir été affectée au préalable. Même si l'instruction if vérifie une condition, elle n'exécute pas l'affectation, 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é à une portée, telle qu'une fonction, il 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évention d'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 :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3