Repaso
English
PythonAvanzadoPY-27

¿Qué imprime esto?

def f():
    try:
        return 1
    finally:
        return 2

print(f())

Opciones

  1. 1
  2. 2 (Opción correcta)
  3. 1 y luego 2
  4. SyntaxError

Respuesta

2

Por qué

finally siempre se ejecuta, incluso después de un return en try.

Si finally también contiene un return, ese segundo return reemplaza al primero, así que f() devuelve 2. Incluso puede ocultar excepciones.

Por eso un return dentro de finally se considera un bug; las versiones recientes de Python avisan de ello.

Recuerda

Nunca hagas return dentro de finally.

Términos clave

Practica esta pregunta en Repaso