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.
Pythondef 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.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
Pythons = '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
Pythona = 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ón | Declarado fuera de las funciones | Declarado dentro de una función. |
| Vida | Creado cuando se inicia el programa y destruido cuando finaliza | Creado cuando se llama a la función y destruido cuando regresa |
| Compartir datos | Compartido en todas las funciones | No compartido; existe sólo dentro de su función |
| Alcance | Se puede acceder desde cualquier parte del programa. | Accesible sólo dentro de la función. |
| Parámetros necesarios | No es necesario pasar parámetros | Puede crearse a través de parámetros o asignaciones dentro de la función. |
| Almacenamiento | Gestionado 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) |
| Valor | Los cambios afectan a todo el programa. | Los cambios son locales y no afectan otras funciones. |