Python es un lenguaje que permite organizar el código en módulos y paquetes, facilitando la reutilización y la modularidad.
Un módulo en Python es simplemente un archivo `.py` que contiene funciones, clases y variables que pueden ser reutilizadas en otros archivos.
Ejemplo de módulo (`mi_modulo.py`):
Definimos una función en el módulo
def saludar(nombre):
return f"Hola, {nombre}!"
Para usar un módulo en otro script, se puede importar con import:
import mi_modulo
print(mi_modulo.saludar("Emanuel")) # Salida: Hola, Emanuel!
También se puede importar solo un elemento específico:
from mi_modulo import saludar
print(saludar("Mundo"))
Si se quiere importar todo el contenido de un módulo pero con un alias:
import mi_modulo as mod
print(mod.saludar("Python"))
Un paquete es una carpeta que contiene múltiples módulos y un archivo especial `__init__.py`, el cual indica que la carpeta debe tratarse como un paquete.
Estructura de un paquete:
mi_paquete/
│── __init__.py
│── modulo1.py
│── modulo2.py
Ejemplo de modulo1.py en mi_paquete:
def sumar(a, b):
return a + b
Ejemplo de modulo2.py en mi_paquete:
def restar(a, b):
return a - b
Para importar módulos desde un paquete:
from mi_paquete import modulo1, modulo2
print(modulo1.sumar(5, 3)) # Salida: 8
print(modulo2.restar(10, 4)) # Salida: 6
También se puede importar solo una función específica:
from mi_paquete.modulo1 import sumar
print(sumar(7, 2))
Importación relativa vs. absoluta
- Importación absoluta: Se usa la ruta completa desde el paquete raíz.
from mi_paquete.modulo1 import sumar
- Importación relativa: Se usa `.` o `..` para referirse a módulos dentro del mismo paquete.
from .modulo1 import sumar # Desde el mismo paquete
from ..otro_paquete.modulo3 import dividir # Desde un paquete hermano
Python incluye una gran cantidad de módulos en su biblioteca estándar, que pueden ser importados directamente:
import math
print(math.sqrt(25)) # Salida: 5.0
Para instalar e importar paquetes de terceros (ejemplo: requests):
$ pip install requests
import requests
response = requests.get("https://api.github.com")
print(response.status_code)
El uso de módulos y paquetes en Python permite mantener el código organizado, reutilizable y fácil de mantener. Con las diferentes opciones de importación, puedes estructurar tus proyectos de manera eficiente.