Curso de Python / Definir funciones y devolver resultados

Una función da nombre a una operación, recibe entradas mediante parámetros y devuelve un resultado. Devolver un valor no es lo mismo que imprimirlo: separar el cálculo de su presentación permite reutilizar y comprobar la misma lógica.

Identificar parámetros, argumentos y resultado

La instrucción def define el nombre de la función y un cuerpo con sangría. Los parámetros son los nombres de esa definición; los argumentos son los valores que proporciona una llamada. Definir una función no ejecuta su cuerpo.

return termina la llamada actual y entrega un resultado a quien la llamó. Si la ejecución llega al final sin devolver un valor explícito, el resultado es None. Una función que se limita a imprimir un número no facilita utilizarlo después en otro cálculo.

La documentación oficial de definición de funciones describe estas reglas. El lugar donde puede consultarse cada nombre se desarrolla en el ámbito de las variables y los objetos compartidos.

Ejecutar una función y reutilizar sus resultados

Guarda el siguiente código como functions.py en UTF-8. Ejecuta python functions.py en la carpeta de práctica con el entorno del proyecto seleccionado. En macOS o Ubuntu, fuera del entorno virtual, utiliza python3 si corresponde al intérprete que preparaste.

def total_with_fee(amount, fee):
    """Return the sum of the amount and fee."""
    return amount + fee

first = total_with_fee(8000, 500)
second = total_with_fee(3500, 0)
print(first, second)
print(first + second)

La salida esperada es:

8500 3500
12000

La primera llamada suma un importe de 8000 y una comisión de 500. La segunda utiliza una comisión de cero. Al conservar los resultados en first y second, el programa puede volver a sumarlos sin repetir ni interpretar el texto de una impresión.

Definir la responsabilidad de la función

El ejemplo presupone dos valores numéricos que pueden sumarse. Admitir importes negativos o unidades fraccionarias es un contrato adicional. Valida los datos en el punto apropiado y expresa los supuestos de las funciones internas, en lugar de hacer que cada función intente gestionar cualquier entrada imaginable.

Operación Resultado para quien llama Efecto visible
return total El valor total No imprime por sí mismo
print(total) None Muestra el valor en la salida

Elige un nombre que describa la operación y evita juntar preguntas al usuario, cálculo y escritura en archivos en una sola función. Una docstring puede explicar el resultado, los supuestos y las excepciones relevantes, pero no debe prometer validaciones que el código no realiza.

Comprobar llamadas incorrectas y resultados ausentes

  1. Cambia la comisión de 500 a 1000 y comprueba que el primer resultado pasa a 9000.
  2. Sustituye temporalmente return por print y observa el valor asignado a first. Después restaura return.
  3. Intenta llamar a una función antes de que se ejecute su definición y observa el error por nombre no definido.

Las variables locales normalmente no pueden leerse directamente desde fuera de su llamada. Devuelve el dato que necesita el código externo en lugar de depender de un estado oculto. Si aparece TypeError por argumentos ausentes, compara la definición y la llamada; los argumentos por posición, nombre y valor predeterminado explican cómo definir entradas opcionales.