Meilleure réponse
Voir ce code.
- counter = 0
- def increment ():
- compteur + = 1
- incrément ()
Python na pas de déclarations de variables, il doit donc déterminer la portée des variables lui-même. Il le fait par une règle simple: sil y a une affectation à une variable à lintérieur dune fonction, cette variable est considérée comme locale. Ainsi, la ligne
counter + = 1
rend implicitement le compteur local à increment (). Si vous essayez dexécuter cette ligne, vous essaierez de lire la valeur du compteur de variable locale avant quil ne soit affecté, ce qui dans un UnboundLocalError.
Pour résoudre ce type derreur, apportez les modifications suivantes.
- counter = 0
- def incrément ():
- compteur global
- counter + = 1
- increment ()
Tout le meilleur …!
Réponse
UnboundLocalError est déclenché lorsquune variable locale est référencée avant quelle ne soit attribué.
Cest une sous-classe de NameError
Cela signifie que vous avez un identifiant auquel vous avez essayé daccéder avant quil ne soit attribué ou peut-être déclaré.
Lun des les nombreux problèmes des langages sans sémantique de typage faible, héritage multiple et sans classe de base ou protocole commun.
Là, je s trop de dépendance sur les exceptions où lintrospection et linférence du compilateur pourraient être plus informatives avant que le code puisse sexécuter.
Ce que vous pensez économiser en tapant des caractères pour avoir une validation dans votre code, vous payez avec des traces de pile .