Repaso
English
PythonIntermedioPY-35

¿Qué pasa?

x = 10
def f():
    print(x)
    x = 5

f()

Opciones

  1. Imprime 10
  2. Imprime 5
  3. UnboundLocalError (Opción correcta)
  4. NameError: x is not defined

Respuesta

UnboundLocalError

Por qué

Python decide qué nombres son locales al leer toda la función, antes de ejecutarla.

Como x = 5 aparece dentro de f, x es local en TODA la función, incluso en la línea anterior a la asignación.

Así que print(x) intenta leer una x local que aún no tiene valor → UnboundLocalError. Usa otro nombre, o global x si de verdad te refieres a la de fuera.

Recuerda

Cualquier asignación dentro de una función hace que ese nombre sea local en toda ella.

Términos clave

Practica esta pregunta en Repaso