En Python, las variables son los contenedores para almacenar valores de datos. Son referencias o punteros a un objeto en la memoria, lo que significa que cada vez que se asigna una variable a una instancia, se asigna a esa instancia. A diferencia de otros lenguajes como C/C++/JAVA, Python no está “escrito estáticamente”. No necesitamos declarar variables antes de usarlas o declarar su tipo. Una variable se crea en el momento en que le asignamos un valor por primera vez.
Ejemplo:
Python3
# Python program to demonstrate # variable assignment # An integer assignment age = 45 # A floating point salary = 1456.8 # A string name = "John" print(age) print(salary) print(name)
Producción:
45 1456.8 John
Nota: Para saber más sobre las variables haz clic aquí .
Alcance de la variable
La ubicación donde podemos encontrar una variable y también acceder a ella si es necesario se denomina alcance de una variable .
Variables globales y locales
Las variables globales son las que se definen y declaran fuera de cualquier función y no se especifican a ninguna función. Pueden ser utilizados por cualquier parte del programa.
Ejemplo:
Python3
# This function uses global variable s def f(): print(s) # Global scope s = "I love Geeksforgeeks" f()
Producción:
I love Geeksforgeeks
Ahora supongamos que una variable con el mismo nombre se define dentro del alcance de la función y luego imprimirá el valor dado dentro de la función solamente y no el valor global.
Python3
# This function has a variable with # name same as s. def f(): s = "Me too." print(s) # Global scope s = "I love Geeksforgeeks" f() print(s)
Producción:
Me too. I love Geeksforgeeks
La variable s se define como la string «Me encantan los Geeksforgeeks», antes de llamar a la función f(). La única instrucción en f() es la instrucción print(s). Como no hay s locales, se utilizará el valor de los s globales.
La pregunta es, ¿qué pasará si cambiamos el valor de s dentro de la función f()? ¿Afectará también a los globales? Lo probamos en el siguiente fragmento de código:
Python3
def f(): print(s) # This program will NOT show error # if we comment below line. s = "Me too." print(s) # Global scope s = "I love Geeksforgeeks" f() print(s)
Producción:
Traceback (most recent call last): File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in f() File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f print(s) UnboundLocalError: local variable 's' referenced before assignment
Para que el programa anterior funcione, necesitamos usar una palabra clave global . Solo necesitamos usar una palabra clave global en una función si queremos hacer asignaciones/cambiarlas. global no es necesario para imprimir y acceder. ¿Por qué? Python «asume» que queremos una variable local debido a la asignación de s dentro de f(), por lo que la primera declaración de impresión arroja este mensaje de error. Cualquier variable que se cambia o se crea dentro de una función es local, si no se ha declarado como una variable global. Para decirle a Python que queremos usar la variable global, tenemos que usar la palabra clave global, como se puede ver en el siguiente ejemplo:
Python3
# This function modifies global variable 's' def f(): global s print(s) s = "Look for Geeksforgeeks Python Section" print(s) # Global Scope s = "Python is great !" f() print(s)
Producción:
Python is great! Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section
Considere el siguiente ejemplo para una mejor comprensión del tema.
Python3
# Python program to demonstrate # scope of variable a = 1 # Uses global because there is no local 'a' def f(): print('Inside f() : ', a) # Variable 'a' is redefined as a local def g(): a = 2 print('Inside g() : ', a) # Uses global keyword to modify global 'a' def h(): global a a = 3 print('Inside h() : ', a) # Global scope print('global : ', a) f() print('global : ', a) g() print('global : ', a) h() print('global : ', a)
Producción:
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3
Palabra clave no local
En Python, la palabra clave no local se usa en el caso de funciones anidadas. Esta palabra clave funciona de manera similar a global, pero en lugar de global, esta palabra clave declara una variable para apuntar a la variable de la función envolvente externa, en el caso de funciones anidadas.
Ejemplo:
Python3
# Python program to demonstrate # nonlocal keyword print ("Value of a using nonlocal is : ", end ="") def outer(): a = 5 def inner(): nonlocal a a = 10 inner() print (a) outer() # demonstrating without non local # inner loop not changing the value of outer a # prints 5 print ("Value of a without using nonlocal is : ", end ="") def outer(): a = 5 def inner(): a = 10 inner() print (a) outer()
Producción:
Value of a using nonlocal is : 10 Value of a without using nonlocal is : 5
Publicación traducida automáticamente
Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA