> lección 12/34 · 16 min

Funciones

Concepto

Una función le pone nombre a un cálculo para reutilizarlo. En vez de copiar la misma fórmula cada vez que la necesitas, la escribes una vez y después la llamas con distintos valores. Si mañana cambia la fórmula, la corriges en un solo lugar.

Sintaxis
def nombre_funcion(parametro1, parametro2):
    return valor

Definir. def, el nombre, los parámetros entre paréntesis y dos puntos. El cuerpo va con sangría. Los parámetros son los nombres que tendrán, dentro de la función, los valores que le pasen.

def calcular_total(precio, cantidad):
    return precio * cantidad

return devuelve el resultado. return entrega un valor a quien llamó la función, y la función termina ahí. Sin return, la función devuelve None. Ojo: print dentro de la función muestra el valor, pero no lo devuelve; para usar el resultado después, necesitas return.

Llamar. Se escribe el nombre con los valores entre paréntesis, en el mismo orden que los parámetros. Lo que devuelve se puede guardar en una variable o usar en otro cálculo.

total = calcular_total(450000, 3)          # 1350000
doble = calcular_total(12000, 2) * 2       # 48000

Valores por defecto. Un parámetro puede tener un valor que se usa si no lo pasan. Así la función sirve para el caso común y para el especial.

def precio_con_iva(neto, iva=0.19):
    return neto * (1 + iva)

precio_con_iva(10000)         # 11900.0
precio_con_iva(10000, 0)      # 10000: un producto exento

> tarea Python

Completa la función calcular_total(precio, cantidad, descuento=0) para que devuelva el precio por la cantidad, con el descuento aplicado (0.1 es un 10 %). Después úsala para guardar en total_notebooks el total de 3 notebooks de 450000 con 10 % de descuento, y en total_mouse el de 2 mouse de 12000 sin descuento.

Cargando Python… la primera vez puede tardar unos segundos.

Primero intenta: las pistas aparecen después de 2 intentos con un resultado incorrecto (los errores de código no cuentan). Llevas 0.

Aprueba las tareas de esta lección para ver el cierre.