Maison > développement back-end > Tutoriel Python > Pourquoi Python génère-t-il une UnboundLocalError ?

Pourquoi Python génère-t-il une UnboundLocalError ?

Mary-Kate Olsen
Libérer: 2024-12-24 13:08:16
original
695 Les gens l'ont consulté

Why Does Python Raise an UnboundLocalError?

Noms non liés en Python : comprendre UnboundLocalError

Lorsqu'il rencontre un nom en Python, l'interpréteur vérifie son état de liaison dans la portée actuelle. Si le nom n'est pas lié à une valeur, une erreur est générée. Comprendre le fonctionnement de la liaison de noms est crucial pour éviter de telles erreurs.

La nature des noms locaux non liés

Une UnboundLocalError se produit lorsqu'une variable locale est référencée avant d'avoir été attribuée. une valeur ou avant qu'une opération de liaison (par exemple, affectation, paramètre de fonction) ait eu lieu. Cette situation peut se produire lorsqu'une instruction conditionnelle empêche l'exécution de l'opération de liaison.

Considérez l'extrait de code suivant :

def foo():
    if False:
        spam = 'eggs'
    print(spam)
Copier après la connexion

Dans cet exemple, la variable spam n'est pas liée au sein du if bloc de l'instruction car la condition est évaluée à False. Lorsque l'interpréteur rencontre l'instruction print, il génère une UnboundLocalError car il ne peut pas localiser une valeur liée pour le spam.

Opérations de liaison

En Python, les opérations de liaison établissent la portée d'un nom. Ces opérations incluent :

  • Affectation
  • Paramètres de fonction
  • pour les noms de boucles
  • Gestionnaires d'exceptions
  • Noms des gestionnaires de contexte

Global et local Liaisons

Les noms locaux sont liés dans une portée spécifique, généralement une fonction ou un bloc imbriqué. Les noms globaux, en revanche, sont liés en dehors de toute portée de fonction et sont accessibles à partir de n'importe quel point du programme. Pour déclarer explicitement une variable comme globale, le mot-clé global doit être utilisé dans la portée de la fonction.

Par exemple, considérons l'extrait de code suivant :

foo = None
def bar():
    foo = 'spam'
    print(foo)
Copier après la connexion

Ce code génère une UnboundLocalError car foo est lié dans le cadre de la fonction bar. Pour résoudre ce problème, foo doit être déclaré comme variable globale dans la fonction :

foo = None
def bar():
    global foo
    foo = 'spam'
    print(foo)
Copier après la connexion

En résumé

UnboundLocalErrors se produit lorsqu'une variable locale est référencée avant d'être liée à une valeur. Comprendre les opérations de liaison et le concept de noms globaux et locaux est essentiel pour éviter ces erreurs. En gérant correctement les liaisons de noms, les programmeurs Python peuvent garantir que leur code s'exécute sans erreurs liées aux noms non liés.

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