Maison >développement back-end >Tutoriel Python >Comment gérer les erreurs de variables locales non liées dans les étendues de fonctions imbriquées ?
Résolution d'UnboundLocalError dans les étendues de fonctions imbriquées
L'interpréteur Python rencontre une UnboundLocalError lors de l'accès à une variable locale non liée dans une fonction imbriquée. Ce problème survient lorsqu'une fonction imbriquée tente de modifier une variable déclarée dans la fonction externe.
Exemple :
Considérez le code suivant :
<code class="python">def outer(): ctr = 0 def inner(): ctr += 1 inner()</code>
Lors de l'exécution de ce code, l'interpréteur génère l'erreur suivante :
Traceback (most recent call last): File "foo.py", line 9, in <module> outer() File "foo.py", line 7, in outer inner() File "foo.py", line 5, in inner ctr += 1 UnboundLocalError: local variable 'ctr' referenced before assignment
Cause :
Malgré les étendues imbriquées, la fonction interne ne peut pas accéder au 'ctr ' directement car elle est définie dans la fonction externe. Cela entraîne une variable non liée, déclenchant l'UnboundLocalError.
Solution :
Python 3 propose l'instruction « nonlocal » pour activer la rereliure de variables dans des étendues imbriquées. La modification du code pour inclure « nonlocal » résout le problème :
<code class="python">def outer(): ctr = 0 def inner(): nonlocal ctr ctr += 1 inner()</code>
Pour les utilisateurs de Python 2, des approches alternatives sont nécessaires :
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!