¿Qué imprime esto?
def f():
try:
return 1
finally:
return 2
print(f())Opciones
- 1
- 2 (Opción correcta)
- 1 y luego 2
- 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.