Lección 6 de 8 35 min

Funciones: organiza y reutiliza tu código

Una función es un bloque de código con nombre que puedes ejecutar tantas veces como quieras. Sin funciones, los programas se convierten en copias repetidas del mismo código. Con funciones, defines la lógica una vez y la usas donde la necesites.

Definir y llamar a una función

def saludar():
    print("Hola desde la función")
    print("Esta línea también pertenece a saludar()")

saludar()  # esto la ejecuta
saludar()  # puedes llamarla cuantas veces quieras

def define la función. El nombre va seguido de paréntesis y dos puntos. El cuerpo va indentado.

Parámetros y argumentos

def saludar(nombre):
    print(f"Hola, {nombre}.")

saludar("María")
saludar("Carlos")
saludar("Joaquín")

Los parámetros son variables que la función espera recibir. Los argumentos son los valores que le pasas cuando la llamas.

Return: devolver un resultado

def sumar(a, b):
    resultado = a + b
    return resultado

total = sumar(5, 3)
print(total)  # 8

# O directamente:
print(sumar(10, 20))  # 30

Sin return, la función devuelve None. Con return, devuelve un valor que puedes usar fuera.

Parámetros con valor por defecto

def potencia(base, exponente=2):
    return base ** exponente

print(potencia(3))     # 9  (3 elevado a 2, por defecto)
print(potencia(3, 3))  # 27 (3 elevado a 3)

Una función puede llamar a otras

def calcular_iva(precio):
    return precio * 0.21

def precio_final(precio_base):
    iva = calcular_iva(precio_base)
    return precio_base + iva

print(f"{precio_final(100):.2f} €")   # 121.00 €
print(f"{precio_final(49.90):.2f} €") # 60.38 €

Docstrings: documenta tus funciones

def calcular_imc(peso, altura):
    """
    Calcula el Índice de Masa Corporal.
    peso en kg, altura en metros.
    Devuelve un float.
    """
    return peso / (altura ** 2)

imc = calcular_imc(70, 1.75)
print(f"IMC: {imc:.1f}")

Ejercicio práctico

Crea calculadora_v2.py con funciones separadas para cada operación:

def sumar(a, b): return a + b
def restar(a, b): return a - b
def multiplicar(a, b): return a * b
def dividir(a, b):
    if b == 0:
        return "Error: división por cero"
    return a / b

a = float(input("Primer número: "))
b = float(input("Segundo número: "))
op = input("Operación (+, -, *, /): ")

if op == "+": print(sumar(a, b))
elif op == "-": print(restar(a, b))
elif op == "*": print(multiplicar(a, b))
elif op == "/": print(dividir(a, b))
else: print("Operación no reconocida")

Checklist antes de marcar completada

  • Puedes definir una función con def, parámetros y return.
  • Entiendes la diferencia entre parámetro y argumento.
  • Sabes cuándo usar valores por defecto en los parámetros.
  • Has ejecutado calculadora_v2.py con las 4 operaciones.

Con variables, condiciones, bucles y funciones ya tienes los cuatro cimientos de cualquier programa. En la próxima lección los combinamos con listas y diccionarios para trabajar con colecciones de datos reales.

📝 Comprueba lo aprendido

Responde estas 4 preguntas y acierta al menos el 60% para desbloquear el botón "Marcar como completada".

1 ¿Qué diferencia hay entre un parámetro y un argumento?

2 ¿Qué devuelve una función que no tiene `return`?

3 ¿Para qué sirve un parámetro con valor por defecto?

4 ¿Qué imprime este código? `def doble(n): return n * 2` / `print(doble(doble(3)))`

Cuando termines, guarda tu avance. Así podrás continuar desde tu panel y desbloquear el certificado al completar el curso.