CAP 04 · LEC 01·Funciones

def y return: definir y llamar funciones en Python

Las funciones son la unidad fundamental de reutilización. def define, return entrega el resultado. En Python también puedes retornar múltiples valores — algo que otros lenguajes envidian.

● PRINCIPIANTE7 min lectura4 ejerciciospor Fernando Herrera · actualizado mayo de 2026
¿Encontraste un error o algo que mejorar?Editá esta lección en GitHub →

Sintaxis de def

Una función se define con def, seguido del nombre, paréntesis con los parámetros y dos puntos. El cuerpo va indentado:

# Función sin parámetros def saludar(): print("¡Hola, mundo!") saludar() # llamar la función # Función con parámetros def saludar_a(nombre): print(f"¡Hola, {nombre}!") saludar_a("Fernando") saludar_a("Ana") # Función con anotaciones de tipo (buena práctica) def sumar(a: int, b: int) -> int: return a + b resultado = sumar(3, 4) print(resultado) # 7 # Las anotaciones no son obligatorias, pero documentan la intención def calcular_area(base: float, altura: float) -> float: """Calcula el área de un rectángulo.""" return base * altura area = calcular_area(5.0, 3.0) print(f"Área: {area}") # Área: 15.0
Salida¡Hola, mundo! ¡Hola, Fernando! ¡Hola, Ana! 7 Área: 15.0
Funciones sin return devuelven None

Si una función no tiene return (o tiene return sin valor), Python devuelve None automáticamente. Esto es diferente de un error — simplemente significa que la función no produce un valor.

return y retorno múltiple

return termina la función y devuelve un valor. Python permite retornar múltiples valores usando una tupla:

# return simple def cuadrado(n: float) -> float: return n ** 2 print(cuadrado(5)) # 25.0 # return múltiple — Python retorna una tupla def min_max(numeros: list) -> tuple[int, int]: return min(numeros), max(numeros) datos = [3, 1, 4, 1, 5, 9, 2, 6] # Recibir como tupla resultado = min_max(datos) print(resultado) # (1, 9) # Desempaquetar directamente minimo, maximo = min_max(datos) print(f"Min: {minimo}, Max: {maximo}") # return temprano para salir antes def dividir(a: float, b: float) -> float | None: if b == 0: print("Error: división por cero") return None # ← return temprano return a / b print(dividir(10, 2)) # 5.0 print(dividir(10, 0)) # Error: división por cero → None
Salida25.0 (1, 9) Min: 1, Max: 9 5.0 Error: división por cero None

Docstrings en funciones

Un docstring describe el propósito de la función, sus parámetros y lo que retorna. Es la documentación que help() y los editores muestran:

def calcular_imc(peso_kg: float, altura_m: float) -> float: """Calcula el Índice de Masa Corporal (IMC). Args: peso_kg: Peso en kilogramos. altura_m: Altura en metros. Returns: El IMC redondeado a 2 decimales. Raises: ValueError: Si la altura es cero o negativa. Examples: >>> calcular_imc(70, 1.75) 22.86 """ if altura_m <= 0: raise ValueError("La altura debe ser positiva") return round(peso_kg / (altura_m ** 2), 2) imc = calcular_imc(70, 1.75) print(f"IMC: {imc}") # IMC: 22.86 # Ver el docstring print(calcular_imc.__doc__)
SalidaIMC: 22.86

Funciones como valores

En Python, las funciones son objetos de primera clase: puedes asignarlas a variables, pasarlas como argumentos y devolverlas desde otras funciones:

def doblar(n: int) -> int: return n * 2 def triplicar(n: int) -> int: return n * 3 # Asignar una función a una variable operacion = doblar print(operacion(5)) # 10 operacion = triplicar print(operacion(5)) # 15 # Pasar funciones como argumentos def aplicar(func, valor): return func(valor) print(aplicar(doblar, 7)) # 14 print(aplicar(triplicar, 7)) # 21 # Función que devuelve otra función def crear_multiplicador(factor): def multiplicar(n): return n * factor return multiplicar por_cinco = crear_multiplicador(5) por_diez = crear_multiplicador(10) print(por_cinco(3)) # 15 print(por_diez(3)) # 30
Salida10 15 14 21 15 30

Practica

Cuatro ejercicios para dominar la definición de funciones en Python.