¿Qué pasa?
x = 10
def f():
print(x)
x = 5
f()Opciones
- Imprime 10
- Imprime 5
- UnboundLocalError (Opción correcta)
- 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.