Organización del Código con Módulos en Python
Los módulos permiten encapsular funcionaliaddes reutilizables en archivos con extensión .py, definiendo funciones, clases y variables que pueden imoprtarse en otros programas. Esta estructura evita la contaminación del espacio de nombres global y mejora la mantenibilidad del código.
Creación de un Módulo Personalizado
Para definir un módulo, guarda el código relevante en un archivo .py. Ejemplo de un módulo para cálculos geométricos:
# calculos_geometricos.py
def area_circulo(radio):
"""Retorna el área de un círculo."""
from math import pi
return pi * radio ** 2
def area_rectangulo(largo, ancho):
"""Retorna el área de un rectángulo."""
return largo * ancho
def perimetro_cuadrado(lado):
"""Retorna el perímetro de un cuadrado."""
return 4 * lado
Importación Completa con import
Utiliza import para cargar el módulo entero y acceder a sus componentes mediante el nombre del módulo.
# app_principal.py
import calculos_geometricos
valor = calculos_geometricos.area_circulo(7)
print(valor) # Salida: 153.93804002589985
valor = calculos_geometricos.area_rectangulo(8, 3)
print(valor) # Salida: 24
valor = calculos_geometricos.perimetro_cuadrado(5)
print(valor) # Salida: 20
Importación Selectiva con from...import
Emplea from...import para importar funciones específicas, permitiendo su uso directo sin prefijos.
# script_secundario.py
from calculos_geometricos import area_circulo, perimetro_cuadrado
resultado = area_circulo(4)
print(resultado) # Salida: 50.26548245743669
resultado = perimetro_cuadrado(9)
print(resultado) # Salida: 36
Rutas de Búsqueda de Módulos
Python busca módulos en el directorio actual, las rutas de PYTHONPATH, los directorios de la biblioteca estándar y los paquetes instalados. Para inspeccionar las rutas:
import sys
print(sys.path)
Ejecución como Script Independiente
Para permitir que un módulo se ejecute como programa principal o se importe, usa la condición if __name__ == "__main__":.
# calculos_geometricos.py (versión modificada)
def area_circulo(radio):
from math import pi
return pi * radio ** 2
def ejecutar_demostracion():
print(area_circulo(3)) # Salida: 28.274333882308138
if __name__ == "__main__":
ejecutar_demostracion()
Al ejecutar directamente, se llama a ejecutar_demostracion(); al importar, no.
Estructura de Paquetes para Proyectos Grandes
Los paquetes agrupan módulos en directorios con un archivo __init__.py, que puede estar vacío o contener código de inicialización. Ejemplo de estructura:
mi_aplicacion/
├── __init__.py
├── auxiliares.py
└── entrada.py
En auxiliares.py:
# auxiliares.py
def formatear_saludo(nombre):
return f"Bienvenido, {nombre}."
En entrada.py:
# entrada.py
from .auxiliares import formatear_saludo
print(formatear_saludo("Carlos")) # Salida: Bienvenido, Carlos.
Módulos de la Biblioteca Estándar
La biblioteca estándar de Python ofrece módulos intgerados para diversas tareas. Ejemplo con datetime:
import datetime
ahora = datetime.datetime.now()
print(ahora.strftime("%Y-%m-%d %H:%M")) # Salida: fecha y hora actual
Gestión de Módulos de Terceros con pip
Los módulos de terceros se instalan mediante pip. Por ejemplo, instalar y utilizar requests:
pip install requests
Uso en código:
import requests
respuesta = requests.get("https://ejemplo.org")
print(respuesta.headers["content-type"]) # Salida: tipo de contenido de la respuesta