Python: Módulos y paquetes

Aprende a gestionar módulos y paquetes en Python. Organiza tu código eficientemente y mejora la mantenibilidad de tus proyectos con técnicas avanzadas.

En Python, los módulos y paquetes son herramientas fundamentales para la organización y reutilización de código. Un módulo es un archivo que contiene definiciones y declaraciones en Python, mientras que un paquete es una colección de módulos organizados en directorios.

Creación y uso de módulos

Un módulo en Python es simplemente un archivo .py que puede contener variables, funciones y clases. Para crear un módulo, basta con definir un archivo con el contenido deseado. Por ejemplo:

# archivo: mi_modulo.py

def saludar(nombre):
    return f"Hola, {nombre}!"

PI = 3.14159

Para utilizar este módulo en otro archivo, se emplea la instrucción import:

# archivo: usar_modulo.py

import mi_modulo

print(mi_modulo.saludar("Mundo"))
print(mi_modulo.PI)

También es posible importar elementos específicos del módulo:

# archivo: usar_modulo.py

from mi_modulo import saludar, PI

print(saludar("Mundo"))
print(PI)

Creación y uso de paquetes

Un paquete es un directorio que contiene un archivo especial __init__.py y uno o más módulos. El archivo __init__.py puede estar vacío o incluir código de inicialización del paquete.

Supongamos la siguiente estructura de directorios:

mi_paquete/
    __init__.py
    modulo1.py
    modulo2.py

Para importar un módulo desde un paquete, se utiliza la notación de punto:

# archivo: usar_paquete.py

from mi_paquete import modulo1, modulo2

modulo1.funcion_del_modulo1()
modulo2.funcion_del_modulo2()

El archivo __init__.py permite inicializar el paquete y definir qué se exporta cuando se usa from mi_paquete import *. Por ejemplo:

# archivo: mi_paquete/__init__.py

from .modulo1 import funcion_del_modulo1
from .modulo2 import funcion_del_modulo2

Con esta configuración, es posible acceder directamente a las funciones:

# archivo: usar_paquete.py

from mi_paquete import funcion_del_modulo1, funcion_del_modulo2

funcion_del_modulo1()
funcion_del_modulo2()

Importaciones relativas

En un paquete, es común utilizar importaciones relativas para acceder a otros módulos dentro del mismo paquete. Por ejemplo:

# archivo: mi_paquete/modulo1.py

from .modulo2 import funcion_del_modulo2

def funcion_del_modulo1():
    print("Llamando a funcion_del_modulo2")
    funcion_del_modulo2()

Las importaciones relativas utilizan el punto (.) para referirse al paquete actual, y dos puntos (..) para referirse al paquete padre.

Buenas prácticas

  • Organización clara: Mantén una estructura de directorios clara y lógica.
  • Nombres descriptivos: Utiliza nombres de módulos y paquetes que describan su contenido.
  • Documentación: Incluye docstrings y comentarios para facilitar la comprensión y mantenimiento del código.
  • Evitación de importaciones cíclicas: Diseña tus módulos y paquetes de manera que no se produzcan dependencias circulares entre ellos.

El uso adecuado de módulos y paquetes mejora la mantenibilidad y la modularidad de los proyectos en Python, facilitando la colaboración y el desarrollo a largo plazo.

Certifícate en Python con CertiDevs PLUS

Lecciones de este módulo de Python

Lecciones de programación del módulo Módulos y paquetes del curso de Python.

Ejercicios de programación en este módulo de Python

Evalúa tus conocimientos en Módulos y paquetes con ejercicios de programación Módulos y paquetes de tipo Test, Puzzle, Código y Proyecto con VSCode.