225 votes

Je ne comprends pas pourquoi UnboundLocalError se produit (fermeture)

Qu'est-ce que je fais de mal ici ?

counter = 0

def increment():
  counter += 1

increment()

Le code ci-dessus lance un UnboundLocalError .

1 votes

Cette question et celle dont elle est actuellement le double sont en cours de discussion au sein de la Chatroom Python .

5 votes

Beaucoup de réponses ici disent d'utiliser global et bien que cela fonctionne, l'utilisation de globaux modifiables est généralement no recommander lorsque d'autres options existent.

21 votes

@ZeroPiraeus Une question posée en 2012 ne peut pas être un doublon d'une question posée en 2016 ... plutôt la plus récente est le doublon.

3voto

chucksmash Points 1046

Pour modifier une variable globale dans une fonction, vous devez utiliser le mot-clé global.

Lorsque vous essayez de faire cela sans la ligne

global counter

à l'intérieur de la définition d'increment, une variable locale nommée counter est créée afin de vous empêcher d'altérer la variable counter dont tout le programme peut dépendre.

Notez que vous n'avez besoin d'utiliser global que lorsque vous modifiez la variable ; vous pourriez lire le compteur à partir de l'incrément sans avoir besoin de l'instruction globale.

1voto

Lostsoul Points 5465

Essayez ceci

counter = 0

def increment():
  global counter
  counter += 1

increment()

-1voto

Marcin Points 25366

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X