Invierte en tu educación con el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12d

01h

57m

34s

1

LEGB: Extensión teórica de Scope

Al buscar un objeto por su identificador, Python se basará en la regla LEGB para realizar toda su búsqueda de este objeto. Las siglas de esta regla significan Local, Enclosing, Global y Built-int y es en este mismo orden de niveles en el que Python comienza dicha búsqueda. Veamos una teoría general sobre cada una de estos niveles:

Local

Un objeto declarado dentro del cuerpo de una función se le conoce como objeto local y al ser este un objeto local, su área de uso se reducirá al punto de que solo pueda ser utilizado por la función donde fue declarado. Por ejemplo, veamos el uso de un objeto local dentro de una función:

defrun():
	x = 1 + 1# Estoy dentro de la función, soy un objeto local.
	print(x)

if __name__ == '__main__':
	run()
# Output: 2

Enclosing

Un objeto declarado en una función que está anidada a otra se le conoce como objeto no-local y al ser este un objeto no-local, su área de uso se limita un poco al punto de que pueda ser utilizado por otras funciones anidadas dentro de la función principal. Por ejemplo, veamos el uso de un objeto no-local dentro de una cadena de funciones:

defmain():
    x = 1# Estoy dentro de la función principal, soy un objeto no-localdefrun():
        suma = x + 1# Puedo ser usado dentro de una función local
        print(suma)
    run()

if __name__ == '__main__':
	main()
# Output: 2

Global

Un objeto declarado fuera del cuerpo de una función se le conoce como objeto global y al ser este un objeto global, su área de uso se expande al punto de que pueda ser utilizado tanto por funciones locales como no-locales. Por ejemplo, veamos el uso de un objeto local dentro de una función:

x = 1# Estoy fuera del cuerpo de una función, soy un objeto globaldefmain():
    y = x + 1# Puedo ser usado dentro de una función no-localdefrun():
        total = x + y # También puedo ser usado dentro de una función local 
        print(total)
    run()

if __name__ == '__main__':
	main()
# Output: 3

Built-in

Keywords, funciones, excepciones y otros atributos que vienen por defecto dentro de Python son parte de el alcance Built-in. Es por ello que nosotros podemos citar, por ejemplo, un print()en cualquier parte de nuestro código o poder convertir cadenas de texto a enteros mediante int().

Conclusión

Entonces, el acrónimo LEGB cumple más que una función mnemotécnica, pues además de esto es la regla que establece el orden de búsqueda con la que Python partirá a encontrar dicho identificador asociado al objeto: Primero comenzaría por local, pasando luego por Enclosing, Global y finalizando con Built-in.

Namespaces-and-Scope-in-Python_Watermarked.cb9ad9d896cb.jpg

Referencias

Escribe tu comentario
+ 2