6: Módulos y Paquetes

6.1 Módulos: Organizacion de tu código

Un módulo en Python no es más que un archivo con extensión .py que contiene código. Al dividir tu programa en módulos, puedes organizar funciones, clases y variables en archivos lógicos. Esto evita tener un solo archivo gigante y hace que tu código sea más legible y manejable.

Crear y usar un módulo

Imagina que tienes un archivo llamado operaciones_matematicas.py con las siguientes funciones:

# operaciones_matematicas.py

def sumar(a, b):
    return a + b

def restar(a, b):
    return a - b

Para usar estas funciones en otro archivo, por ejemplo, principal.py, necesitas importar el módulo.

# principal.py

# Importar el módulo completo
import operaciones_matematicas

# Usar las funciones del módulo
resultado_suma = operaciones_matematicas.sumar(10, 5)
print(f"La suma es: {resultado_suma}")

resultado_resta = operaciones_matematicas.restar(10, 5)
print(f"La resta es: {resultado_resta}")

Formas de importar

Hay varias maneras de importar módulos, cada una con sus ventajas:

  • Importación completa: import nombre_del_modulo

    • Ventaja: Evita conflictos de nombres.
    • Desventaja: El código puede ser más largo.
  • Importación específica: from nombre_del_modulo import funcion_o_clase

    • Ventaja: Permite usar las funciones directamente sin el prefijo del módulo.
    • Desventaja: Podría causar conflictos si importas funciones con el mismo nombre de diferentes módulos.
# principal.py
from operaciones_matematicas import sumar

resultado = sumar(20, 10)
print(f"El resultado es: {resultado}")
  • Importación con alias: import nombre_del_modulo as alias

    • Ventaja: Útil para acortar nombres largos de módulos.
import operaciones_matematicas as op_mat

resultado = op_mat.sumar(7, 3)
print(f"La suma es: {resultado}")

6.2 Paquetes: Organizando módulos

Un paquete es una colección de módulos que están organizados en un directorio. Los paquetes te ayudan a estructurar tu proyecto de una manera jerárquica y lógica, especialmente cuando tienes muchos módulos. Un directorio se convierte en un paquete si contiene un archivo especial llamado __init__.py (aunque en las versiones más recientes de Python ya no es estrictamente necesario, es una buena práctica incluirlo).

Estructura de un paquete

Imagina la siguiente estructura de archivos:

mi_proyecto/
├── main.py
└── matematicas/
    ├── __init__.py
    ├── basicas.py
    └── avanzadas.py
  • matematicas es el paquete.
  • basicas.py y avanzadas.py son los módulos dentro del paquete.

Importar desde un paquete

Para usar las funciones del módulo basicas.py en main.py, debes especificar la ruta completa desde la raíz de tu proyecto.

# main.py

from matematicas import basicas

print(basicas.sumar(2, 2))

También puedes importar directamente la función:

# main.py

from matematicas.basicas import sumar

print(sumar(10, 10))

6.3 Librerías: Módulos de terceros

Además de los módulos que tú creas, Python tiene una vasta comunidad que ha desarrollado librerías o bibliotecas (colecciones de paquetes y módulos) para casi cualquier tarea. Algunas librerías populares son NumPy para cálculos científicos, Pandas para análisis de datos y requests para hacer peticiones web. Para instalarlas, usas la herramienta pip, que viene incluida con Python.

Usando pip

Para instalar una librería, abre tu terminal y ejecuta:

pip install nombre_de_la_libreria

Una vez instalada, puedes importarla en tu código como cualquier otro módulo. Por ejemplo, para usar la librería requests:

# En la terminal
pip install requests
# En tu código Python
import requests

respuesta = requests.get("https://www.google.com")
print(respuesta.status_code)

Al dominar el uso de módulos y paquetes, podrás escalar tus proyectos, mantener un código limpio y aprovechar el enorme ecosistema de librerías de Python. ¡Felicidades, has completado los fundamentos de Python! Es hora de poner todo lo que has aprendido en práctica en tus propios proyectos.