Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Alcance variables en Python

Python clasifica los alcances de acuerdo con el modelo LEGB, que determina el orden en que se buscan las variables. Las siglas LEGB corresponden a:

Local: Variables definidas dentro de una función o bloque, accesibles únicamente dentro de ese contexto. Se crean al inicio de la ejecución de la función y desaparecen cuando esta termina.

def saludo():
    mensaje = "¡Hola, mundo!"  # Variable local
    print(mensaje)

saludo()
print(mensaje)  # Esto generará un error porque 'mensaje' es local a la función.

En este caso, la variable mensaje se define y utiliza dentro de la función saludo. Fuera de esta función, la variable no existe y no se puede acceder.

Enclosing: Se refiere a las variables definidas en una función exterior que encapsula otra función. Estas variables no son locales para la función más interna, pero tampoco son globales.

def funcion_exterior():
    mensaje = "Hola desde la función exterior"  # Variable en el alcance 'enclosing'

    def funcion_interior():
        print(mensaje)  # La función interior accede a la variable de la exterior

    funcion_interior()

funcion_exterior()

Salida: Hola desde la función exterior

En este caso, mensaje no es ni local para funcion_interior ni global, sino que pertenece al alcance de funcion_exterior. Este es un ejemplo de una variable con alcance enclosing.

Global: Variables definidas en el nivel superior del script(/ejecutar-script-python) o programa, fuera de cualquier función. Son accesibles en todo el archivo, pero pueden ser modificadas dentro de una función solo si se usa la palabra clave global.

mensaje = "Hola desde el alcance global"  # Variable global

def imprimir_mensaje():
    print(mensaje)  # Accediendo a la variable global

imprimir_mensaje()

print(mensaje)  # También accesible fuera de las funciones

Salida: Hola desde el alcance global Hola desde el alcance global

En este caso, mensaje se define fuera de cualquier función(/funciones-python), por lo que es global y puede ser utilizada tanto dentro como fuera de las funciones(/funciones-python).

Built-in: Variables y funciones predefinidas de Python que están disponibles en cualquier parte del código, como len(), range() y print().

from math import sqrt  # 'sqrt' es una función built-in del módulo 'math'

numero = 16
raiz_cuadrada = sqrt(numero)  # Usamos la función built-in para calcular la raíz cuadrada
print(f"La raíz cuadrada de {numero} es {raiz_cuadrada}")

Salida: La raíz cuadrada de 16 es 4.0

En este caso, utilizamos una función(/funciones-python) built-in del módulo estándar math, que amplía las funcionalidades predefinidas de Python.