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
Libérer: 2024-12-23 01:11:14
original
244 Les gens l'ont consulté

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!

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