UT4: Funciones y módulos¶
Introducción¶
Bienvenid@s a la Unidad de Trabajo 4 (UT4) del módulo profesional optativo (MPO) de Python. En esta unidad, nos centraremos en el concepto de funciones y módulos, dos elementos fundamentales para estructurar y organizar nuestro código de manera eficiente. Las funciones nos permiten encapsular bloques de código que realizan tareas específicas, mientras que los módulos nos permiten agrupar funciones relacionadas en archivos separados, facilitando la reutilización y el mantenimiento del código.
Perfecto. A continuación tienes el material teórico ampliado sobre funciones en Python, pensado para alumnado de 1º de DAM, en el módulo de Programación. Incluye definiciones detalladas, analogías, ejemplos comentados y consejos didácticos.
Funciones¶
Una función es un bloque de código con nombre que se puede ejecutar cuando se necesite. Sirve para resolver una tarea específica y puede recibir datos (llamados parámetros) y devolver un resultado (valor de retorno).
Piensa en una función como una máquina: Le das ingredientes (parámetros), hace un trabajo (instrucciones), y puede darte un resultado (valor de retorno).
Ventajas de usar funciones¶
- Reutilización de código: Escribes una vez, usas muchas.
- Modularidad: Puedes dividir un programa en partes más pequeñas, claras y fáciles de entender.
- Facilita la prueba de errores: Puedes probar una función de forma aislada.
- Mejora la legibilidad: Los programas con funciones bien nombradas se entienden mejor.
¿Cómo se define una función en Python?¶
Sintaxis básica¶
Detalle de cada parte¶
def: palabra reservada que indica que se va a definir una función.nombre_funcion: identificador que le damos a la función. Se recomienda usar minúsculas y guiones bajos (snake_case) si tiene varias palabras.parámetros: variables que recibe la función como entrada (pueden ser cero o más).return: sirve para devolver un resultado desde la función (es opcional).
Ejemplos¶
Ejemplo 1: Función sin parámetros ni retorno¶
Esta función no necesita datos externos. Simplemente ejecuta una instrucción (mostrar un mensaje).
Ejemplo 2: Función con parámetros¶
Aquí, la función recibe un valor externo (
nombre) y lo usa para personalizar el saludo. Los parámetros permiten hacer funciones más flexibles.
Ejemplo 3: Función con retorno (return)¶
Esta función devuelve un valor. La palabra clave
returnse usa para enviar el resultado de vuelta al lugar donde fue llamada. Es muy útil cuando necesitamos que la función nos diga el resultado de su operación.
Ejemplo 4: Función con valores por defecto¶
Si el usuario no proporciona un valor, se usa el valor por defecto (
"invitado"). Esto hace que la función sea más flexible.
Ejemplo 5: Función con múltiples valores de retorno¶
Python permite devolver varios valores separados por comas, y luego se pueden recoger en varias variables.
Buenas prácticas al crear funciones¶
- Usa nombres descriptivos: que indiquen claramente qué hace la función (
calcular_area,obtener_precio, etc.). - Añade comentarios o docstrings (
"""texto""") para explicar la función. - Divide tareas complejas en varias funciones más simples.
- No dependas de variables externas (globales) dentro de una función.
- Procura que cada función haga una sola cosa. Esto se llama el principio de responsabilidad única.
¿Cuándo usar funciones?¶
- Siempre que tengas código que se repite
- Siempre que una parte del programa pueda separarse y probarse sola
- Cuando quieras organizar tu programa de forma modular
Módulos¶
¿Qué es un módulo?¶
Un módulo es un archivo con extensión .py que contiene código Python organizado para ser reutilizado. Este código puede incluir:
- Funciones (bloques de código reutilizables)
- Clases (plantillas para crear objetos)
- Variables (datos almacenados)
- Código ejecutable (que se corre al importar el módulo)
Ejemplo visual:
Beneficios clave:
- Organización: Divide programas grandes en archivos más pequeños y manejables.
- Reutilización: Usa el mismo código en múltiples proyectos sin copiar/pegar.
- Encapsulamiento: Oculta detalles complejos detrás de interfaces simples.
Cómo importar módulos¶
Importación básica¶
- Accedes a los elementos con la notación
módulo.elemento - Ideal cuando necesitas muchos elementos del módulo
Importación selectiva¶
- Ventaja: No necesitas prefijar con el nombre del módulo
- Riesgo: Posibles conflictos de nombres
Importación con alias¶
- Especialmente útil para:
- Módulos con nombres largos
- Librerías de visualización de datos
- Cuando trabajas con múltiples módulos similares
Importación avanzada¶
- Permite renombrar funciones para mayor claridad
- Útil cuando los nombres originales son muy técnicos
Creación de módulos personalizados¶
Estructura típica:¶
Ejemplo completo:
geometria.py
main.py
Notas importantes:
- El archivo
__init__.py(aunque vacío) convierte un directorio en un paquete Python - El código fuera de funciones se ejecuta al importar el módulo
Módulos estándar más importantes¶
Matemáticas (math)¶
Fechas y horas (datetime)¶
Sistema operativo (os)¶
Aleatoriedad (random)¶
Buenas prácticas con módulos¶
- Nombres descriptivos:
calculadora.pymejor quemod1.py - Documentación: Usa docstrings para explicar el módulo
- Evitar
from modulo import *: Puede causar conflictos