Ámbito de las variables de Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *