scope

=Varibales Locales y Globales= El **scope** de una variable indica hasta dónde se extiende su vida. Si definimos una variable dentro de una función, fuera de ella deja de existir. Decimos que es una **variable local**: code format="python" def prueba: x = 3 print "Dentro, x vale", x

prueba print "Fuera, x vale", x code Si ejecutamos el script anterior obtendremos algo similar a lo siguiente: code format="python" Dentro x vale 3 Fuera x vale

Traceback (most recent call last): File "", line 1, in    print "Fuera x vale", x NameError: name 'x' is not defined

code En efecto, x no está definido fuera de la función. Nace y muere con ella. El comportamiento es un poco más complejo con variables definidas fuera de la funciones u otros objetos (las llamadas **variables globales**). Podemos acceder a su valor simplemente usando su nombre como es lógico. Si escribimos esto code format="python" x=2 def prueba: print 'x vale', x

prueba code obtendremos de resultado code format="python" x vale 2 code Pero si intentamos modificar el valor de la variable, Python piensa que es una variable local y nos dará error. Compruébalo: code format="python" x=2 def prueba: x = x + 2 print 'x vale', x

prueba code El código anterior, al ejecutarlo, nos va a dar error: code format="python" Traceback (most recent call last): File "prueba.py", line 7, in    prueba File "prueba.py", line 4, in prueba x = x + 2 UnboundLocalError: local variable 'x' referenced before assignment code Para solucionarlo, para poder modificar una variable global desde el interior de una función, basta con indicarle a Python que dicha variable es global. El código corregido es el siguiente: code format="python" x=2 def prueba: global x   x = x + 2 print 'x vale', x

prueba code La salida, esta vez sin error, será code format="python" x vale 4 code