python 3.11+ · Python
Le message
UnboundLocalError: cannot access local variable 'count' where it is not associated with a value
Ce que cela veut dire
Si une fonction affecte un nom n'importe où dans son corps, Python considère ce nom comme local à la fonction — et vous l'avez lu avant que l'affectation ne s'exécute. Cela survient quand vous attendiez la valeur extérieure du même nom, ou la première fois que vous écrivez une opération de lecture-écriture comme count += 1. L'initialiser dans la fonction avec count = 0 est la réponse habituelle ; s'il faut vraiment modifier la valeur au niveau du module, global count le fait, au prix d'une valeur dont les écrivains deviennent difficiles à suivre. Jusqu'à la 3.10 la même erreur s'écrivait 'local variable referenced before assignment'.
Le correctif
Pas de commande en une ligne ici. L’explication dit où regarder.
- Émis par
- python 3.11+
- Python
- 18
Une trace Python coupe la réponse en deux : la dernière ligne dit ce qui a échoué, les cadres au-dessus disent où — ne lire que la dernière ligne donne le nom et fait perdre l'endroit ; et pour les erreurs de valeur absente comme NoneType et KeyError, la cause siège presque toujours dans un cadre au-dessus de celui qui a planté.
Lire un message d’erreur
- Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
- S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
- Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
- La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
- Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.
Questions fréquentes
Q. Que veut dire « UnboundLocalError: cannot access local variable 'count' where it is not associated with a value » ?
Si une fonction affecte un nom n'importe où dans son corps, Python considère ce nom comme local à la fonction — et vous l'avez lu avant que l'affectation ne s'exécute. Cela survient quand vous attendiez la valeur extérieure du même nom, ou la première fois que vous écrivez une opération de lecture-écriture comme count += 1. L'initialiser dans la fonction avec count = 0 est la réponse habituelle ; s'il faut vraiment modifier la valeur au niveau du module, global count le fait, au prix d'une valeur dont les écrivains deviennent difficiles à suivre. Jusqu'à la 3.10 la même erreur s'écrivait 'local variable referenced before assignment'.
Q. Comment le corriger ?
Pas de commande en une ligne. L’explication ci-dessus dit où regarder.
Q. Quel outil émet cela ?
python 3.11+. Cela relève de Python, et le message compte 14 mots.