Maison > développement back-end > Tutoriel Python > Pourquoi est-ce que j'obtiens une UnboundLocalError dans Python 3 et comment puis-je la corriger ?

Pourquoi est-ce que j'obtiens une UnboundLocalError dans Python 3 et comment puis-je la corriger ?

Mary-Kate Olsen
Libérer: 2024-12-06 15:37:11
original
618 Les gens l'ont consulté

Why Do I Get an UnboundLocalError in Python 3, and How Can I Fix It?

Python 3 : Comprendre UnboundLocalError et sa résolution

Lorsque vous rencontrez UnboundLocalError dans Python 3, cela indique qu'une variable locale est référencée avant son affectation au sein d’une fonction. Examinons la cause et une solution efficace à ce problème.

Pour illustrer l'erreur, considérons l'extrait de code suivant :

Var1 = 1
Var2 = 0
def function(): 
    if Var2 == 0 and Var1 > 0:
        print("Result 1")
    elif Var2 == 1 and Var1 > 0:
        print("Result 2")
    elif Var1 < 1:
        print("Result 3")
    Var1 -= 1
function()
Copier après la connexion

Dans ce code, une variable globale Var1 est définie et attribué une valeur de 1. À l'intérieur de la fonction, la variable Var1 est référencée avant d'être affectée dans l'instruction conditionnelle et l'opération Var1 -= 1. Cela se traduit par UnboundLocalError car Python interprète l'opération -= comme une affectation au sein de la fonction, créant une variable locale portant le même nom que la variable globale.

Pour résoudre ce problème, l'utilisation de variables globales est généralement déconseillée. Cependant, si nécessaire, vous pouvez déclarer explicitement une variable globale à l'intérieur de la fonction en utilisant le mot-clé global au début, comme le montre le code suivant :

def function(): 
    global Var1, Var2
    ...
Copier après la connexion

En incluant cette ligne, vous demandez à Python de regarder toutes les références à Var1 et Var2 dans la portée globale, résolvant ainsi l'erreur UnboundLocalError et vous permettant d'accéder aux variables globales dans la fonction.

Il est important de noter que l'utilisation de variables globales doit être limité aux situations nécessaires, car elles peuvent entraîner de la confusion et des problèmes de maintenance du code. Python propose plusieurs mécanismes, tels que l'instruction nonlocal introduite dans Python 3, pour gérer efficacement les portées des variables et éviter les UnboundLocalErrors.

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