Funciones en Python: parámetros, retorno y diseño reutilizable

Construye funciones claras y reutilizables entendiendo entrada, salida, scope y contratos de uso con ejemplos reales.

Una función encapsula una unidad de lógica: recibe datos (parámetros), procesa y devuelve resultado (`return`).

Separar lógica en funciones evita duplicación y facilita pruebas unitarias.

El contrato de una función se define por su firma: qué recibe, qué devuelve y qué asunciones hace.

Diseñar funciones pequeñas y con responsabilidad única reduce deuda técnica desde fases tempranas.

  • Si una función no retorna explícitamente, Python devuelve `None`.
  • Una diferencia importante: `print(...)` muestra información, `return` entrega un valor para que otra parte del programa lo use.
  • Cuando confundes `print` con `return`, el código parece funcionar localmente, pero no se puede reutilizar en pipelines o tests.
  • Piensa la función como una caja negra: entra dato, sale dato. Lo demás es implementación interna.
  • Definir defaults reduce ruido en llamadas repetitivas.

1) `def` y `return`: forma básica de una función

Si una función no retorna explícitamente, Python devuelve `None`.

Una diferencia importante: `print(...)` muestra información, `return` entrega un valor para que otra parte del programa lo use.

Cuando confundes `print` con `return`, el código parece funcionar localmente, pero no se puede reutilizar en pipelines o tests.

Piensa la función como una caja negra: entra dato, sale dato. Lo demás es implementación interna.

2) Parámetros posicionales, por defecto y nombrados

Definir defaults reduce ruido en llamadas repetitivas.

Un parámetro por defecto permite no repetir valores comunes en cada llamada.

Las llamadas con argumentos nombrados (`func(iva=0.10)`) mejoran legibilidad cuando hay varios parámetros similares.

Regla útil: parámetros obligatorios primero, opcionales al final con valores por defecto razonables.

3) Scope (ámbito): variables locales vs globales

Una función debe depender preferentemente de sus parámetros, no de estado global oculto.

Variables definidas dentro de una función viven en ámbito local y no contaminan el resto del programa.

Cuanto más dependa una función de variables globales, más difícil será testearla y mantenerla.

Diseña funciones puras cuando sea posible: mismas entradas -> mismas salidas.

  • Evita mutar estado global sin necesidad.
  • Prefiere retorno de datos frente a efectos laterales.
  • Tipa parámetros y retorno para clarificar contrato.
  • Nombra funciones por intención de negocio.
Python
06

Funciones en Python: parámetros, retorno y diseño reutilizable

Construye funciones claras y reutilizables entendiendo entrada, salida, scope y contratos de uso con ejemplos reales.

Código del tema: def procesar(datos): return datos

📘 Teoría

1) `def` y `return`: forma básica de una función

Si una función no retorna explícitamente, Python devuelve `None`.

1

Una diferencia importante: `print(...)` muestra información, `return` entrega un valor para que otra parte del programa lo use.

2

Cuando confundes `print` con `return`, el código parece funcionar localmente, pero no se puede reutilizar en pipelines o tests.

3

Piensa la función como una caja negra: entra dato, sale dato. Lo demás es implementación interna.

2) Parámetros posicionales, por defecto y nombrados

Definir defaults reduce ruido en llamadas repetitivas.

Un parámetro por defecto permite no repetir valores comunes en cada llamada.

Las llamadas con argumentos nombrados (`func(iva=0.10)`) mejoran legibilidad cuando hay varios parámetros similares.

Regla útil: parámetros obligatorios primero, opcionales al final con valores por defecto razonables.

1

Parámetro por defecto

Valor usado cuando no se especifica en llamada.

2

Argumentos nombrados

Útiles para evitar confusión en llamadas largas.

3) Scope (ámbito): variables locales vs globales

Una función debe depender preferentemente de sus parámetros, no de estado global oculto.

Variables definidas dentro de una función viven en ámbito local y no contaminan el resto del programa.

Cuanto más dependa una función de variables globales, más difícil será testearla y mantenerla.

Diseña funciones puras cuando sea posible: mismas entradas -> mismas salidas.

  • Evita mutar estado global sin necesidad.
  • Prefiere retorno de datos frente a efectos laterales.
  • Tipa parámetros y retorno para clarificar contrato.
  • Nombra funciones por intención de negocio.

🧪 Aprende probando

🏁 Retos

Reto Reto: devuelve el saludo en vez de imprimirlo Transforma la función para que retorne un valor reutilizable.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com