Maison > développement back-end > Tutoriel Python > Pourquoi « counter = 1 » à l'intérieur d'une fonction provoque-t-il une « UnboundLocalError » en Python ?

Pourquoi « counter = 1 » à l'intérieur d'une fonction provoque-t-il une « UnboundLocalError » en Python ?

Mary-Kate Olsen
Libérer: 2024-12-15 00:32:14
original
122 Les gens l'ont consulté

Why Does `counter  = 1` Inside a Function Cause an `UnboundLocalError` in Python?

UnboundLocalError dans les fermetures : une analyse

Une UnboundLocalError se produit lorsqu'une variable utilisée dans le code d'une fonction n'est pas définie localement, globalement ou comme partie d'un bloc non local. Considérez le code suivant :

counter = 0

def increment():
  counter += 1

increment()
Copier après la connexion

L'exécution de ce code entraînera une UnboundLocalError. Pourquoi cela se produit-il ?

Comprendre la portée des variables de Python

Python détermine dynamiquement la portée des variables en fonction de l'affectation. Si une variable est affectée dans une fonction, elle est considérée comme locale à cette fonction. Dans notre exemple, l'affectation counter = 1 dans Increase() définit implicitement counter comme local à cette fonction.

Variables locales et globales

Python fait la distinction entre local et variables globales. Les variables globales sont déclarées au niveau du module et sont accessibles dans tout le programme. Les variables locales, en revanche, sont créées au sein des fonctions et n'existent qu'au sein de ces fonctions.

Dans notre cas, le compteur n'est pas défini globalement. L'erreur se produit parce que Python essaie de lire la valeur du compteur à partir de la portée locale de l'incrément() avant qu'elle ne soit attribuée, d'où l'UnboundLocalError.

Résolution de l'erreur

Pour résoudre cette erreur, vous pouvez effectuer l'une des opérations suivantes :

  • Utiliser le fichier global Mot-clé : Pour les variables qui doivent être accessibles à la fois dans la fonction et à l'extérieur de celle-ci, utilisez le mot-clé global. Ceci déclare la variable comme globale, ce qui permet d'y accéder depuis n'importe quelle portée.
  • Utiliser nonlocal (Python 3.x uniquement) : Ce mot-clé est utilisé pour déclarer une variable comme non locale, ce qui signifie qu'il n'est pas local à la fonction actuelle mais est accessible dans ses fonctions non imbriquées englobantes.

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