1) `def` y `return`: forma básica de una función
Si una función no retorna explícitamente, Python devuelve `None`.
Una diferencia importante: `print(...)` muestra información, `return` entrega un valor para que otra parte del programa lo use.
Cuando confundes `print` con `return`, el código parece funcionar localmente, pero no se puede reutilizar en pipelines o tests.
Piensa la función como una caja negra: entra dato, sale dato. Lo demás es implementación interna.