Ir al contenido principal

Módulos: importación y uso

Introducción

Los módulos son uno de los pilares fundamentales de Python que nos permiten organizar y reutilizar nuestro código de manera efectiva. Imagina que tienes una caja de herramientas donde cada herramienta cumple una función específica; los módulos funcionan de manera similar, ofreciéndonos funcionalidades específicas que podemos utilizar según nuestras necesidades. En este artículo, aprenderemos qué son los módulos, cómo importarlos y cómo utilizarlos para mejorar nuestros programas.

¿Qué son los módulos?

Un módulo en Python es simplemente un archivo con extensión .py que contiene definiciones de funciones, clases y variables que podemos reutilizar en otros programas. La biblioteca estándar de Python incluye cientos de módulos que resuelven problemas comunes, desde operaciones matemáticas hasta manipulación de archivos.

Tipos de módulos

En Python encontramos principalmente tres tipos de módulos:

  1. Módulos de la biblioteca estándar: Vienen instalados con Python (como math, random, datetime).
  2. Módulos de terceros: Creados por la comunidad, se instalan mediante gestores de paquetes como pip.
  3. Módulos propios: Los que creamos nosotros mismos para nuestros proyectos.

Cómo importar módulos

Python ofrece varias formas de importar módulos:

Importación completa

La forma más básica es importar el módulo completo:

import math

# Uso del módulo
resultado = math.sqrt(16)
print(resultado)  # Imprime 4.0

En este caso, debemos usar el nombre del módulo como prefijo para acceder a sus funciones.

Importación con alias

Podemos asignar un nombre alternativo (alias) a un módulo para simplificar su uso:

import math as m

# Uso del módulo con alias
resultado = m.sqrt(16)
print(resultado)  # Imprime 4.0

Esto es especialmente útil con módulos de nombres largos.

Importación selectiva

También podemos importar solo elementos específicos de un módulo:

from math import sqrt, pi

# Uso directo de las funciones importadas
resultado = sqrt(16)
print(resultado)  # Imprime 4.0
print(pi)  # Imprime 3.141592653589793

En este caso, no necesitamos usar el prefijo del módulo.

Importación global

Aunque generalmente no se recomienda, podemos importar todo el contenido de un módulo:

from math import *

# Uso directo de todas las funciones
resultado = sqrt(16)
angulo = sin(pi/2)

Esta práctica puede causar conflictos de nombres y dificultar la lectura del código.

Módulos comunes de la biblioteca estándar

Python incluye una amplia biblioteca estándar. Veamos algunos módulos útiles:

Módulo math

Proporciona funciones matemáticas:

import math

print(math.sqrt(25))  # Raíz cuadrada: 5.0
print(math.factorial(5))  # Factorial: 120
print(math.pi)  # Valor de pi: 3.141592653589793

Módulo random

Para generar números y selecciones aleatorias:

import random

print(random.randint(1, 10))  # Número entero aleatorio entre 1 y 10
print(random.choice(["manzana", "naranja", "plátano"]))  # Elemento aleatorio
numeros = [1, 2, 3, 4, 5]
random.shuffle(numeros)  # Mezcla la lista aleatoriamente
print(numeros)

Módulo datetime

Para trabajar con fechas y horas:

import datetime

ahora = datetime.datetime.now()
print(ahora)  # Fecha y hora actual
print(ahora.year)  # Año actual
print(ahora.strftime("%d/%m/%Y"))  # Formato personalizado de fecha

# Crear una fecha específica
fecha = datetime.datetime(2023, 12, 31)
print(fecha)

Módulo os

Para interactuar con el sistema operativo:

import os

# Directorio actual
print(os.getcwd())

# Listar archivos y carpetas
print(os.listdir())

# Comprobar si existe un archivo
print(os.path.exists("ejemplo.txt"))

El sistema de búsqueda de módulos

Cuando importamos un módulo, Python lo busca en este orden:

  1. El directorio actual
  2. La lista de directorios en la variable de entorno PYTHONPATH
  3. Los directorios de instalación de Python

Podemos ver la ruta de búsqueda con:

import sys
print(sys.path)

Paquetes frente a módulos

Un paquete es simplemente una carpeta que contiene múltiples módulos (archivos .py) relacionados. Los paquetes deben contener un archivo especial llamado __init__.py (que puede estar vacío) para ser reconocidos como paquetes.

La estructura de un paquete podría ser:

mi_paquete/
├── __init__.py
├── modulo1.py
├── modulo2.py
└── subpaquete/
    ├── __init__.py
    └── modulo3.py

Y podríamos importar así:

import mi_paquete.modulo1
from mi_paquete import modulo2
from mi_paquete.subpaquete import modulo3

Información sobre módulos

Podemos obtener información sobre un módulo con la función help():

import math
help(math)  # Muestra documentación sobre el módulo math

También podemos listar todos los elementos de un módulo con dir():

import math
print(dir(math))  # Lista todos los nombres definidos en el módulo

Resumen

Los módulos son una herramienta esencial en Python que nos permiten organizar, reutilizar y compartir código. Aprender a importar y utilizar módulos no solo hará nuestro código más limpio y organizado, sino que también nos dará acceso a una enorme cantidad de funcionalidades ya implementadas, evitando "reinventar la rueda". En el próximo artículo, aprenderemos a crear nuestros propios módulos para compartir nuestro código entre diferentes programas.