Pregunta Variable local (?) Referenciada antes de la asignación [duplicado]


Posible duplicado:
var local referenciado antes de la asignación
Python 3: UnboundLocalError: variable local a la que se hace referencia antes de la asignación 

test1 = 0
def testFunc():
    test1 += 1
testFunc()

Estoy recibiendo el siguiente error:

UnboundLocalError: variable local 'test1' a la que se hace referencia antes de la asignación.

El error dice que 'test1' es una variable local, pero pensé que esta variable es global

Entonces, ¿es global o local y cómo resolver este error sin pasar globalmente? test1 como argumento para testFunc?


75
2017-08-10 15:39


origen


Respuestas:


Para que pueda modificar test1 mientras que dentro de una función necesitarás definir test1 como una variable global, por ejemplo:

test1 = 0
def testFunc():
    global test1 
    test1 += 1
testFunc()

Sin embargo, si solo necesita leer la variable global, puede imprimirla sin utilizar la palabra clave global, al igual que:

test1 = 0
def testFunc():
     print test1 
testFunc()

Pero cada vez que necesite modificar una variable global, debe usar la palabra clave global.


136
2017-08-10 15:43



La mejor solución: no usar globals

>>> test1 = 0
>>> def test_func(x):
        return x + 1

>>> test1 = test_func(test1)
>>> test1
1

35
2017-08-10 15:45



Debes especificar que test1 es global:

test1 = 0
def testFunc():
    global test1
    test1 += 1
testFunc()

7
2017-08-10 15:41