Maison >développement back-end >Tutoriel Python >Pourquoi « c = 1 » provoque-t-il une « UnboundLocalError » dans les fonctions Python ?

Pourquoi « c = 1 » provoque-t-il une « UnboundLocalError » dans les fonctions Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-23 01:11:14202parcourir

Why Does `c  = 1` Cause an `UnboundLocalError` in Python Functions?

UnboundLocalError : portée de variable dans les fonctions avec affectations

UnboundLocalError se produit lorsqu'une variable est utilisée dans une fonction sans être correctement définie ou importée. Comprendre le concept de portée est crucial pour résoudre ce problème.

Python fait la distinction entre les variables locales et globales au sein des fonctions. Lorsqu’une variable reçoit une valeur dans une fonction, elle devient une variable locale. Cette variable locale est prioritaire sur toute variable globale du même nom.

Dans l'exemple fourni, lorsque c = 1 est exécuté, une variable locale c est créée. Cette variable locale remplace la variable globale c par la valeur 3. Cependant, l'instruction print(c) tente d'accéder au c global, qui n'est pas défini à ce stade, provoquant l'erreur UnboundLocalError.

Pour remédier à ce problème , Python propose deux options :

  • global : Déclarer une variable comme globale dans une fonction garantit qu'elle fait référence à la variable globale du même nom. En plaçant global c comme première ligne de la fonction test(), l'instruction print(c) ferait référence au global c, éliminant ainsi l'erreur.
  • nonlocal (Python 3) : Utilisez c non local pour accéder à la variable c définie dans la portée de la fonction englobante la plus proche. Cette option est particulièrement utile pour les fermetures.

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!

Déclaration:
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