Funciones básicas
Las funciones te permiten encapsular lógica reutilizable bajo un nombre descriptivo. En vez de copiar y pegar código, lo definís una vez y lo llamás cuantas veces quieras. Es el salto de "scripts sueltos" a "código profesional".
Concepto teórico
¿Qué es una función?
Una función es un bloque de código con nombre que recibe datos (parámetros), los procesa y
opcionalmente devuelve un resultado (return). Definís la función una vez con def y después la
llamás cuantas veces quieras pasándole distintos datos.
def nombre_funcion(parametro1, parametro2):
"""Docstring: qué hace la función."""
# lógica
resultado = parametro1 + parametro2
return resultado
# Llamar la función
x = nombre_funcion(10, 20) # x = 30
Anatomía de una función
def— keyword que indica "acá defino una función"- Nombre: en
snake_case, descriptivo.calcular_iva, nof1 - Parámetros: variables que la función recibe entre paréntesis. Puede ser 0, 1 o muchos
- Docstring: texto entre
"""triple comillas"""que documenta qué hace. Accesible conhelp(funcion) - Cuerpo: el código indentado que se ejecuta cuando llamás la función
return— devuelve un valor al llamador. Sin return, la función devuelveNone
Parámetros vs argumentos
Técnicamente: los parámetros son los nombres en la definición (def f(x, y)); los
argumentos son los valores que pasás al llamar (f(10, 20)). En la práctica, la gente usa
ambos términos indistintamente.
Python soporta dos formas de pasar argumentos:
- Posicionales: el orden importa.
f(10, 20)→ x=10, y=20 - Nombrados (keyword): usás el nombre del parámetro.
f(y=20, x=10)→ mismo resultado. Más legible cuando hay muchos parámetros.
Valores por defecto
Podés darle valores por defecto a los parámetros. Si el llamador no los pasa, se usa el default:
def calcular_iva(precio, tasa=0.21):
return precio * (1 + tasa)
calcular_iva(1000) # usa tasa=0.21 → 1210.0
calcular_iva(1000, 0.105) # usa tasa=0.105 → 1105.0
def f(a, b=10) ✅. def f(a=10, b) ❌ SyntaxError.def f(datos=[]) es un bug clásico: la lista se comparte entre todas las llamadas. Usá
def f(datos=None): if datos is None: datos = [].
Return: devolver valores
return hace dos cosas: (1) devuelve un valor al llamador, y (2) termina la ejecución de la función
inmediatamente. Todo lo que haya después del return NO se ejecuta.
Una función puede devolver múltiples valores como tupla: return a, b, c. El llamador los
desempaqueta: x, y, z = funcion().
Si no hay return (o hay return sin valor), la función devuelve None.
=CALCULAR_IVA(A1, 0.21) recibe una celda y una tasa, procesa internamente, y devuelve
el resultado. No necesitás saber cómo calcula — solo sabés que funciona. Encapsulación.Type hints: documentar tipos
Python permite anotar los tipos esperados de parámetros y retorno. No fuerzan nada (Python sigue siendo dinámico), pero documentan la intención y habilitan herramientas como Pylance para detectar errores:
def calcular_cuota(capital: float, tasa: float, meses: int) -> float:
"""Calcula cuota simple."""
return (capital * (1 + tasa)) / meses
leer_csv() → limpiar_datos() → calcular_metricas() → generar_reporte(). Cada función hace UNA cosa
bien (principio de responsabilidad única).
calcular_iva(), filtrar_clientes(), generar_reporte(). Las variables son
sustantivos: saldo, cliente, tasa. Verbos para funciones, sustantivos
para datos.
Ejemplos explicados paso a paso
Ejemplo 1: Definir y llamar funciones básicas
Hacé clic en ▶ Ejecutar
Ejemplo 2: Return múltiple y docstrings
Hacé clic en ▶ Ejecutar
Ejemplo 3: DRY — de código repetido a funciones
Hacé clic en ▶ Ejecutar
Ejemplo 4: Funciones con type hints y validación
Hacé clic en ▶ Ejecutar
Ejemplo 5: Funciones como pipeline
Hacé clic en ▶ Ejecutar
Referencia rápida
| Concepto | Sintaxis | Ejemplo |
|---|---|---|
| Definir | def nombre(params): |
def sumar(a, b): |
| Llamar | nombre(args) |
sumar(3, 5) |
| Return | return valor |
return a + b |
| Return múltiple | return a, b |
Devuelve tupla |
| Default | def f(x, y=10): |
y es opcional, vale 10 |
| Keyword arg | f(y=20, x=5) |
Nombrás el parámetro |
| Docstring | """Descripción.""" |
Primera línea del cuerpo |
| Type hint | def f(x: int) -> str: |
Documentar tipos |
| Sin return | — | Devuelve None |
| Buena práctica | Ejemplo |
|---|---|
| Nombres con verbos | calcular_iva, filtrar_clientes |
| Una responsabilidad | Cada función hace UNA cosa |
| DRY: no repetir código | Si copiás un bloque, creá una función |
| Docstring siempre | Args, Returns, descripción |
| No mutar argumentos | No modificar listas/dicts que te pasan |
| Return temprano | if error: return None al inicio |
Ejercicios
Ejercicio 1: Función con IVA
Creá con_iva(precio) que devuelva el precio + 21%. Probá con $10,000. Debe incluir
12100.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Función con parámetro default
Creá saludar(nombre, saludo="Hola") que imprima "{saludo}, {nombre}!". Probá con y
sin saludo. Debe incluir Hola, García.
Hacé clic en ▶ Ejecutar
Ejercicio 3: Return múltiple
Creá min_max(numeros) que devuelva el mínimo y máximo como tupla. Probá con
[45, 72, 38, 91, 55]. Debe incluir 38.
Hacé clic en ▶ Ejecutar
Ejercicio 4: Sueldo neto con función
Creá sueldo_neto(bruto, jub=0.11, os=0.03, gan=0.17). Calculá el neto de $750,000. Debe incluir
517500.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Función con docstring completo
Creá interes_simple(capital, tasa, meses) con docstring que incluya Args y Returns. Calculá para
$200,000 al 5% por 6 meses. Debe incluir 60000.
Hacé clic en ▶ Ejecutar
Ejercicio 6: Función clasificadora
Creá clasificar_score(score) que devuelva "Excelente" (>=800), "Bueno" (>=700), "Regular"
(>=600) o "Malo". Probá con 720. Debe incluir Bueno.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Función que procesa lista
Creá limpiar_montos(lista_str) que reciba ["$1,500","N/A","$3,200"] y devuelva una
lista de floats (saltando inválidos). Debe incluir 4700.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Función que devuelve diccionario
Creá analizar(saldos) que devuelva un dict con total, promedio, min, max, cantidad. Debe incluir
promedio.
Hacé clic en ▶ Ejecutar
Ejercicio 9: Funciones como pipeline
Creá 3 funciones: limpiar(texto) que stripee y titlece, validar(nombre) que
verifique que tiene al menos 2 caracteres, y formatear(nombre, i) que devuelva
"N. Nombre". Aplicá las 3 a una lista sucia. Debe incluir García.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Motor de evaluación crediticia como funciones
Creá un mini motor de crédito con funciones: validar_edad(e), validar_ingreso(i),
validar_score(s), calcular_ratio(cuota, ingreso), y
evaluar_cliente(nombre, edad, ingreso, score, cuota) que las use todas. Probá con 3 clientes.
Debe incluir EVALUACIÓN.
Hacé clic en ▶ Ejecutar
Resumen y conexión
def nombre(params):define una función.returndevuelve un valor.- Los parámetros con default van al final:
def f(a, b=10):. - Return múltiple (
return a, b) devuelve una tupla que podés desempaquetar. - Sin return, la función devuelve
None. - Docstrings (
"""...""") documentan funciones. Type hints (x: int) documentan tipos. - Principio DRY: si copiás código, creá una función. Nombra funciones con verbos.
- Las funciones como pipeline (
limpiar → validar → procesar) son el patrón profesional.
En la siguiente lección (19 · Funciones avanzadas) vas a aprender *args/**kwargs, lambda, funciones como objetos, closures, decoradores y generators — las herramientas que separan código junior de código senior.
Recursos: Python docs — Functions · PEP 257 — Docstrings