2.5 Trabajar con Módulos en Python¶
1. ¿Qué es un módulo y por qué es útil?¶
Definición de Módulo
En Python, un módulo es un archivo que contiene definiciones y declaraciones de Python (funciones, variables, clases, etc.). Los módulos permiten organizar el código en bloques reutilizables, lo que hace que sea más fácil mantener y reutilizar en diferentes programas. Además de los módulos que puedes crear, Python viene con una rica biblioteca estándar de módulos para facilitar tareas comunes como trabajar con fechas, operaciones matemáticas, manipulación de archivos y mucho más.
¿Por qué es útil un módulo?¶
- Reutilización: Puedes escribir una vez el código dentro de un módulo y usarlo tantas veces como lo necesites en diferentes programas.
- Organización: Permiten dividir programas grandes en pequeños bloques más manejables.
- Mantenimiento: Si necesitas cambiar el comportamiento de una función o clase, solo tendrás que actualizar el módulo, sin necesidad de modificar cada archivo que lo usa.
2. Cómo crear un módulo en Python¶
Para crear un módulo, simplemente escribe el código Python en un archivo con la extensión .py. Una vez guardado, podrás importar ese archivo y utilizar sus funciones y variables en otros programas.
Tener en cuanta el nombre y la localización del archivo para importarlo correctamente. Ejempplo de estructura si queremos guardar varios módulos en una carpeta para ir clasificandolos:
mi_proyecto/
│├── main.py # Archivo principal donde se usará el módulo
│└── mis_modulos/ # Carpeta que contiene los módulos
│ ├── __init__.py # Archivo para indicar que es un paquete
│ ├── matematicas.py # Módulo con funciones matemáticas
│ └── texto.py # Módulo con funciones de manipulación de texto
mis_modulos es una carpeta que contiene varios módulos. Para importar un módulo desde esta carpeta, debes asegurarte de que la carpeta contenga un archivo __init__.py (puede estar vacío) para que Python la reconozca como un paquete.
¿Como imporar desde main.py?
from mis_modulos import matematicas # Importa el módulo matematicas desde la carpeta mis_modulos
from mis_modulos.texto import formatear_texto # Importa una función específica
Ejemplo:¶
Supongamos que tienes un archivo llamado mimodulo.py con el siguiente código:
# mimodulo.py
def saludar(nombre):
return f"¡Hola, {nombre}!"
Este archivo mimodulo.py contiene una función llamada saludar. Para utilizarla en otro archivo, simplemente necesitas importarlo.
3. Importar y usar un módulo en otro archivo Python¶
Para importar un módulo en Python, utilizamos la instrucción import. De esta forma, podemos acceder a todas las funciones, clases y variables definidas en el módulo importado.
Ejemplo:¶
Imagina que tienes dos archivos:
Archivo: mimodulo.py:
def saludar(nombre):
return f"¡Hola, {nombre}!"
Archivo: principal.py:
import mimodulo # Importamos el módulo
nombre = "Juan"
print(mimodulo.saludar(nombre)) # Llamamos a la función saludar del módulo
En este caso, hemos importado todo el módulo mimodulo y luego llamamos a su función saludar utilizando la notación mimodulo.saludar(nombre).
4. Importar funciones específicas de un módulo¶
Si solo necesitas una o algunas funciones de un módulo, puedes importarlas específicamente usando la sintaxis from.
Ejemplo:¶
from mimodulo import saludar # Importamos solo la función saludar
nombre = "Ana"
print(saludar(nombre)) # Llamamos directamente a la función sin necesidad de usar el nombre del módulo
En este caso, solo importamos la función saludar del módulo mimodulo y la usamos directamente en el código.
5. Ejercicio Resuelto¶
Ejercicio 1: Crear un módulo matemático y usarlo en otro archivo¶
Paso 1: Crear un módulo con funciones matemáticas.¶
Vamos a crear un archivo llamado matematicas.py que contendrá varias funciones matemáticas:
# matematicas.py
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 "No se puede dividir por cero"
return a / b
Paso 2: Usar el módulo en otro archivo.¶
Ahora, creamos otro archivo llamado usar_matematicas.py donde vamos a importar las funciones del módulo matematicas.py y usarlas:
# usar_matematicas.py
from matematicas import sumar, restar # Importamos solo las funciones sumar y restar
x = 10
y = 5
print(sumar(x, y)) # 15
print(restar(x, y)) # 5
Explicación: En este ejercicio, creamos un módulo matematicas.py que contiene cuatro funciones y luego las importamos en otro archivo para hacer uso de ellas. Observa que solo importamos las funciones que necesitamos.
6. Ejercicios prácticos¶
Ejercicio 1: Crea un módulo con una función de comparación¶
Ejercicio 1: Crear un módulo de Comparación
Crea un archivo llamado comparacion.py con las funciones para comparar dos números: mayor, menor e igual. Deve devolver 1 si a es mayor que b, -1 si a es menor que b y 0 si son iguales. Luego, en otro archivo, importa y usa estas funciones.
Pistas:
- Usa input() para que el usuario ingrese dos números.
- Implementa la función de comparación en el módulo.
Ejemplo de solución
# comparacion.py
def compara(a, b):
return 1 if a > b else 0 if a == b else -1
# usar_comparacion.py
from comparacion import compara
a = int(input("Introduce el primer número: "))
b = int(input("Introduce el segundo número: "))
resultado = compara(a, b)
if resultado == 1:
print(f"{a} es mayor que {b}")
elif resultado == -1:
print(f"{a} es menor que {b}")
else:
print(f"{a} es igual a {b}")
Ejercicio 2: Crear un módulo de cálculos de áreas¶
Ejercicio 2: Crear un módulo de cálculos de áreas
Crea un módulo llamado areas.py que tenga funciones para calcular el área de un círculo y un rectángulo. Luego, en un archivo separado, importa estas funciones y calcula el área de diferentes figuras geométricas.
Ejemplo de solución
# areas.py
import math
def area_circulo(radio):
return math.pi * radio ** 2
def area_rectangulo(base, altura):
return base * altura
def area_triangulo(base, altura):
return 0.5 * base * altura
# usar_areas.py
from areas import area_circulo, area_rectangulo, area_triangulo
print("Área del círculo con radio 5:", area_circulo(5))
print("Área del rectángulo con base 4 y altura 6:", area_rectangulo(4, 6))
print("Área del triángulo con base 3 y altura 7:", area_triangulo(3, 7))
```
Ejercicio 3: Crear un módulo con funciones para determinar si un número es par, impar o si es primo.¶
Ejercicio 3: funciones matemáticas
Crea un módulo llamado numeros.py que contenga las siguientes funciones:
es_par(n): DevuelveTruesines par,Falseen caso contrario.es_impar(n): DevuelveTruesines impar,Falseen caso contrario.es_primo(n): DevuelveTruesines un número primo,Falseen caso contrario.
Luego, en otro archivo, importa estas funciones y prueba su funcionamiento con diferentes números.
Ejemplo de solución
# numeros.py
def es_par(n):
return n % 2 == 0
def es_impar(n):
return n % 2 != 0
def es_primo(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
# usar_numeros.py
from numeros import es_par, es_impar, es_primo
numero = int(input("Introduce un número: "))
print(f"¿Es {numero} par? {es_par(numero)}")
print(f"¿Es {numero} impar? {es_impar(numero)}")
print(f"¿Es {numero} primo? {es_primo(numero)}")
```
7. Resumen¶
En este tema hemos aprendido cómo trabajar con módulos en Python. Hemos visto cómo crear, importar y utilizar módulos para hacer nuestro código más organizado y reutilizable. Además, hemos aprendido cómo importar funciones específicas de un módulo y cómo usar módulos propios en lugar de escribir el mismo código una y otra vez. Los ejercicios prácticos permiten consolidar los conceptos vistos y mejorar la comprensión del trabajo con módulos.
Recursos Complementarios:¶
Ejercicios propuestos¶
Ejericicio 1: Crear un módulo para cálculo de áreas:¶
Crea un módulo llamado areas.py que contenga funciones para calcular el área de un círculo, un rectángulo y un triángulo. Luego, en otro archivo, importa estas funciones y calcula el área de diferentes figuras geométricas.
Puedes usar las siguientes fórmulas:
- Área del círculo:
- Área del rectángulo:
- Área del triángulo:
El número pi puedes importarlo desde el módulo math de Python.
import math
numero_pi = math.pi
Ejercicio 2: Crear un módulo para manejar listas de enteros¶
Crea un módulo llamado listas.py que contenga funciones para:
- Generar una lista de N números enteros aleatorios entre un rango dado.
- Una función que indique si la lista tiene o no números repetidos.
- Una función que multiplique todos los números de la lista por un número dado.
- Una función que devuelva la suma de todos los números de la lista.
Luego, en otro archivo, importa estas funciones y prueba su funcionamiento.
Ejercicio 3: Crear un módulo para manejo de cadenas de texto¶
Crea un módulo llamado texto.py que contenga funciones para:
- Contar el número de palabras en una cadena de texto.
- Contar el número de caracteres (con y sin espacios).
- Convertir una cadena a mayúsculas y otra a minúsculas.
- Revertir una cadena de texto.
Luego, en otro archivo, importa estas funciones y prueba su funcionamiento.
Soluciones propuestas a los ejercicios propuestos¶
Solución Ejercicio 1: Crear un módulo para cálculo de áreas
| areas.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
| usar_areas.py | |
|---|---|
1 2 3 4 5 6 | |
Solución Ejercicio 2: Crear un módulo para manejar listas de enteros
| listas.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
| usar_listas.py | |
|---|---|
1 2 3 4 5 6 7 8 | |
Solución Ejercicio 3: Crear un módulo para manejo de cadenas de texto
| texto.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
| title | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |