Duplicate possible:
var local référencé avant l'affectation
Python 3: UnboundLocalError: variable locale référencée avant l'affectation
test1 = 0
def testFunc():
test1 += 1
testFunc()
Je reçois l'erreur suivante:
UnboundLocalError: variable locale 'test1' référencée avant l'affectation.
Erreur dit que 'test1'
est une variable locale mais je pensais que cette variable était globale
Donc, est-ce global ou local et comment résoudre cette erreur sans passer global test1
comme argument à testFunc
?
Pour que vous puissiez modifier test1
tout en étant dans une fonction, vous devez définir test1
comme une variable globale, par exemple:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()
Toutefois, si vous ne devez lire que la variable globale, vous pouvez l’imprimer sans utiliser le mot-clé global
, comme suit:
test1 = 0
def testFunc():
print test1
testFunc()
Mais chaque fois que vous devez modifier une variable globale, vous devez utiliser le mot clé global
.
Meilleure solution: n'utilisez pas global
s
>>> test1 = 0
>>> def test_func(x):
return x + 1
>>> test1 = test_func(test1)
>>> test1
1
Vous devez spécifier que test1 est global:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()