Los paquetes en python
1. Qué es un paquete en Python? #
Un paquete en Python es una forma de organizar varios módulos relacionados en un solo lugar. Mientras que un módulo es un archivo .py que contiene código Python, un paquete es un directorio que puede contener múltiples módulos y subpaquetes, junto con un archivo especial llamado __init__.py. Los paquetes te permiten estructurar mejor tu código y facilitar la reutilización y el mantenimiento.
2. Cómo funciona un paquete? #
- Un módulo es un solo archivo
.pyque contiene funciones, clases y variables. - Un paquete es un directorio que contiene uno o más módulos (y posiblemente subpaquetes) junto con un archivo
__init__.py.
3. Ejemplo: Crear y usar un paquete #
Supongamos que estás desarrollando una aplicación para manejar operaciones matemáticas básicas y avanzadas. Podrías organizar tu código en un paquete.
Paso 1: Crear la estructura del paquete #
Primero, crea un directorio para tu paquete, por ejemplo, mi_paquete:
mi_paquete/
__init__.py
basico.py
avanzado.py
__init__.py: Este archivo puede estar vacío, pero su presencia indica a Python que este directorio debe ser tratado como un paquete.basico.py: Contiene funciones para operaciones matemáticas básicas (como suma y resta).avanzado.py: Contiene funciones para operaciones matemáticas más avanzadas (como potencia y raíz cuadrada).
Paso 2: Definir los módulos #
Crea y define las funciones en los archivos basico.py y avanzado.py.
Archivo: mi_paquete/basico.py
1# Archivo: basico.py 2 3def suma(a, b): 4 return a + b 5 6def resta(a, b): 7 return a - b
Archivo: mi_paquete/avanzado.py
1# Archivo: avanzado.py 2 3def potencia(a, b): 4 return a ** b 5 6def raiz_cuadrada(a): 7 return a ** 0.5
Paso 3: Usar el paquete en otro script #
Ahora puedes importar y usar las funciones de tu paquete en otro script:
Archivo: main.py
1# Importar el paquete y los módulos 2from mi_paquete.basico import suma, resta 3from mi_paquete.avanzado import potencia, raiz_cuadrada 4 5# Usar las funciones del paquete 6print(f"2 + 3 = {suma(2, 3)}") 7print(f"5 - 2 = {resta(5, 2)}") 8print(f"2 ^ 3 = {potencia(2, 3)}") 9print(f"La raíz cuadrada de 16 es {raiz_cuadrada(16)}")
- ¿Qué hace este código?:
- Importa las funciones
sumayrestadel módulobasico, ypotenciayraiz_cuadradadel móduloavanzadodentro del paquetemi_paquete. - Usa estas funciones en el script principal para realizar diferentes operaciones matemáticas.
- Importa las funciones
- Resultado en pantalla:
2 + 3 = 5 5 - 2 = 3 2 ^ 3 = 8 La raíz cuadrada de 16 es 4.0
4. Subpaquetes #
Puedes organizar aún más tu código utilizando subpaquetes. Un subpaquete es simplemente un subdirectorio dentro de un paquete principal que también contiene un archivo __init__.py y otros módulos.
Por ejemplo, podrías tener una estructura como esta:
mi_paquete/
__init__.py
basico/
__init__.py
suma.py
resta.py
avanzado/
__init__.py
potencia.py
raiz_cuadrada.py
5. Por qué usar paquetes? #
- Organización: Te permite estructurar tu código en módulos y submódulos relacionados, lo que hace que el código sea más fácil de navegar y mantener.
- Reutilización: Puedes reutilizar los módulos en diferentes proyectos sin tener que duplicar código.
- Escalabilidad: Facilita la gestión de proyectos más grandes y complejos al dividir el código en partes más pequeñas y manejables.
Resumen del tema
Conceptos clave #
- Estructura de un Paquete: carpeta que agrupa múltiples módulos y subpaquetes conteniendo un archivo
__init__.py. - Función de
__init__.py: marca el directorio como paquete importable, inicializa el paquete y controla la exportación pública mediante__all__. - Importaciones Relativas vs Absolutas:
- Absolutas:
from mi_paquete.modulo import funcion. - Relativas (dentro del paquete):
from . import moduloofrom ..subpaquete import item.
- Absolutas:
- Jerarquía y Subpaquetes: permite anidar paquetes para estructurar proyectos de software escalables.
Qué debes recordar #
Un paquete es una carpeta con un archivo __init__.py que agrupa módulos relacionados en una jerarquía organizada y reutilizable.