Hoy puro #Python ya que fue día de Workshop en ShipHero:
- Namespaces
- Excepciones y
- ¿Por qué Self?
¿Qué aprendí hoy?
- Este video The LEGB rule tiene un muy buen dato para leer los traceback de #Python en los errores de typo
NameError
. De abajo para arriba son los scopes en los que está buscando el intérprete la definición de la variable. 🚀 - La declaración
nonlocal
def f():
x = 20
def g():
x = 40
g()
print(f"{x=}")
f()
x=20
-
En estas funciones:
g()
dentro def()
quiere modificarx
que está definida enf()
. Pero cuando ejecutamos la funciónf()
no se modificax
ya quex
esta definida en el Enclosing Scope def()
-
Para modificar
x
desdeg()
necesitamos llamar a lanonlocal
def f():
x = 20
def g():
nonlocal x
x = 40
g()
print(f"{x=}")
f()
x=40
No es una buena práctica, no está bueno hacerlo, pero Python nos deja. Así que RECUERDEN
- En Python las excepciones también se pueden usar para el manejo de las señales.
- Self es la referencia a la instancia de ese objeto y este artículo lo deja bien claro Why explicit self has to stay. Escrito por el mismísimo Guido Van Rossum.