Memorias Impuras #5

Hoy puro #Python ya que fue día de Workshop en ShipHero:

  • Namespaces
  • Excepciones y
  • ¿Por qué Self?

¿Qué aprendí hoy?

/images/miles-morales-spider-man.gif
  • 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 de f() quiere modificar x que está definida en f(). Pero cuando ejecutamos la función f() no se modifica x ya que x esta definida en el Enclosing Scope de f()

  • Para modificar x desde g() necesitamos llamar a la nonlocal

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

/images/Great-Power-comes-Great-Responsibility.jpg
  • 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.

Miles vino de acá

python 
comments powered by Disqus