logo

Variables globales y locales en Python

En Python, las variables juegan un papel clave en el almacenamiento y gestión de datos. Su comportamiento y accesibilidad dependen de dónde estén definidos en el programa. En este artículo exploraremos las variables globales y locales, cómo funcionan y escenarios comunes con ejemplos.

Variables locales

Las variables locales se crean dentro de una función y existen sólo durante su ejecución. No se puede acceder a ellos desde fuera de la función.



tutorial de lenguaje de programación java

Ejemplo 1: En este código estamos creando y accediendo a una variable local dentro de una función.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Producción
Hello from inside the function! 

Explicación: Nosotros definimos saludar() con una variable local mensaje e imprimirlo. Dado que msg existe solo durante la ejecución de la función, se accede a él dentro de la función. Vocación saludar() muestra el mensaje.

Ejemplo 2 : En este ejemplo, estamos creando una variable local dentro de una función y luego intentamos acceder a ella fuera de la función, lo que provoca un error.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Producción

Rastreo (última llamada más reciente):
Archivo '/home/guest/sandbox/Solution.py' línea 6 en
print('Función externa:' mensaje)
NameError: el nombre 'msg' no está definido

Explicación: mensaje es una variable local dentro saludar() y sólo se puede acceder allí. Imprimirlo afuera provoca un error porque no existe globalmente.



Variables globales

Las variables globales se declaran fuera de todas las funciones y se puede acceder a ellas desde cualquier parte del programa, incluidas las funciones internas.

En este ejemplo, estamos creando una variable global y luego accedemos a ella tanto dentro como fuera de una función.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Producción
Inside function: Python is awesome! Outside function: Python is awesome! 

Explicación: mensaje es una variable global accesible tanto dentro como fuera del mostrar() función. Vocación mostrar() imprime el global mensaje e imprimiendo mensaje fuera de la función funciona como se esperaba.

Nota: Si una variable no se encuentra dentro de una función (alcance local), Python la busca automáticamente en el alcance global. Sin embargo, si una variable local tiene el mismo nombre que una global, ocultará la variable global dentro de esa función.

Uso de variables locales y globales.

Si una variable se define tanto global como localmente con el mismo nombre, la variable local oculta la variable global dentro de la función. Los cambios en la variable local no afectan a la variable global a menos que la declare explícitamente como global.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Producción
Me too. I love Geeksforgeeks 

Explicación: Adentro divertido() s es una variable local establecida en 'Yo también'. e imprime ese valor. Fuera de lo global s sigue siendo 'Me encanta Geeksforgeeks', por lo que imprimir s luego muestra el valor global.

Modificar variables globales dentro de una función

Por defecto no se puede modificar una variable global dentro de una función sin declararla como global. Si prueba Python, generará un error porque trata la variable como local. Para modificar una variable global utilice el palabra clave global .

Sin global (provoca error)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Producción

UnboundLocalError: variables locales a las que se hace referencia antes de la asignación

Explicación: Dentro de fun() Python asume que s es local ya que intentamos modificarlo. Pero no existe ningún s local antes de esa línea, por lo que se produce un error.

Con global (funciona correctamente)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Producción
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Explicación:

  • Declarar s como global le dice a Python que use la variable del alcance global.
  • La función primero agrega 'GFG' y luego reasigna s.
  • Los cambios persisten fuera de la función.

Global versus local con el mismo nombre

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

Producción
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Explicación:

  • f() imprime global a sin cambiarlo.
  • g() crea un local y deja el global intacto.
  • h() declara a como global y lo modifica.

Variable local versus variable global

Base de comparación Variables globales variables locales
DefiniciónDeclarado fuera de las funcionesDeclarado dentro de una función.
VidaCreado cuando se inicia el programa y destruido cuando finalizaCreado cuando se llama a la función y destruido cuando regresa
Compartir datosCompartido en todas las funcionesNo compartido; existe sólo dentro de su función
AlcanceSe puede acceder desde cualquier parte del programa.Accesible sólo dentro de la función.
Parámetros necesariosNo es necesario pasar parámetrosPuede crearse a través de parámetros o asignaciones dentro de la función.
AlmacenamientoGestionado en el espacio de nombres global (ubicación de memoria no fija)Almacenado en el espacio de nombres local de la función (marco de pila)
ValorLos cambios afectan a todo el programa.Los cambios son locales y no afectan otras funciones.