Volver a la lista

Módulos de Python y la biblioteca estándar.

Aprenderá a importar módulos en Python, a utilizar la biblioteca estándar y a gestionar paquetes externos con pip.

Intermedio
|
10min
|
Verificado (2026-07)
móduloimportbiblioteca estándarpipgestión de paquetes
Progreso0/18 (0%)

Módulos y biblioteca estándar de Python

Al finalizar este tema

Comprenderá el funcionamiento de import, podrá utilizar los módulos clave de la biblioteca estándar de Python y podrá instalar y administrar paquetes externos con pip.


¿Qué es un módulo?

Un módulo es un único archivo que contiene código de Python (.py). Es un archivo que contiene funciones, clases y variables, y que puede ser importado y utilizado en otros archivos (import).

python
# math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
PI = 3.14159
python
# main.py
import math_utils
print(math_utils.add(3, 5)) # 8
print(math_utils.multiply(4, 7)) # 28
print(math_utils.PI) # 3.14159

Al ejecutar import math_utils, Python busca y ejecuta el archivo math_utils.py en el mismo directorio, lo que permite utilizar sus funciones y variables mediante la sintaxis math_utils.nombre.


Diferentes formas de importar

python
# 1. Importar el módulo completo
import os
os.getcwd() # Directorio actual
# 2. Importar solo una función concreta
from os.path import join, exists
join("/home", "user") # '/home/user': puede usarse join en vez de os.path.join
# 3. Asignar un alias
import numpy as np
np.array([1, 2, 3]) # np.array en vez de numpy.array
# 4. Importar todo (no recomendado)
from os import * # Riesgo de colisión de nombres; no permite rastrear su origen

from X import * es práctico, pero su origen es desconocido, por lo que no se recomienda para proyectos grandes. Siempre es mejor usar la importación explícita.


Biblioteca estándar: herramientas disponibles sin instalación

Al instalar Python, se instalan automáticamente cientos de módulos. Esta es la biblioteca estándar. Refleja la filosofía de Python de "incluye todo lo necesario".

os: interacción con el sistema operativo

python
import os
# Directorio actual
print(os.getcwd()) # /home/user/project
# Lista de archivos
files = os.listdir(".")
print(files) # ['main.py', 'data', 'output']
# Crear un directorio
os.makedirs("output/reports", exist_ok=True)
# Variables de entorno
db_host = os.environ.get("DB_HOST", "localhost")

os.path — Manejo de rutas

python
import os.path
path = "/home/user/data/report.csv"
os.path.basename(path) # 'report.csv'
os.path.dirname(path) # '/home/user/data'
os.path.splitext(path) # ('/home/user/data/report', '.csv')
os.path.exists(path) # True or False
os.path.join("data", "output", "file.txt") # 'data/output/file.txt'

json — Procesamiento de datos JSON

python
import json
# Objeto Python → cadena JSON
data = {"name": "Hoon", "scores": [90, 85, 95]}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
# Cadena JSON → objeto Python
parsed = json.loads(json_str)
print(parsed["name"]) # Hoon
# Guardar y leer un archivo
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)

Para que los caracteres no ASCII se guarden sin modificaciones, como en el caso de español, debes incluir ensure_ascii=False.

datetime — Fecha y hora

python
from datetime import datetime, timedelta
# Hora actual
now = datetime.now()
print(now) # 2026-07-03 14:30:00.123456
# Conversión de formato
print(now.strftime("%Y-%m-%d")) # 2026-07-03
print(now.strftime("%Y/%m/%d %H:%M")) # 2026/07/03 14:30
# Cadena → datetime
date = datetime.strptime("2026-07-03", "%Y-%m-%d")
# Cálculos con fechas
tomorrow = now + timedelta(days=1)
week_ago = now - timedelta(weeks=1)
diff = datetime(2026, 12, 31) - now
print(f"D-{diff.days}") # D-181

collections — estructuras de datos avanzadas

python
from collections import Counter, defaultdict
# Counter: contar frecuencias
words = ["apple", "banana", "apple", "cherry", "banana", "apple"]
count = Counter(words)
print(count) # Counter({'apple': 3, 'banana': 2, 'cherry': 1})
print(count.most_common(2)) # [('apple', 3), ('banana', 2)]
# defaultdict: diccionario con valor predeterminado
scores = defaultdict(list)
scores["math"].append(90)
scores["math"].append(85)
scores["english"].append(92)
print(dict(scores)) # {'math': [90, 85], 'english': [92]}

random — Generación de números aleatorios

python
import random
random.randint(1, 100) # Entero entre 1 y 100
random.choice(["A", "B", "C"]) # Elige uno de la lista
random.shuffle([1, 2, 3, 4]) # Baraja la lista in situ
random.sample(range(100), 5) # Elige cinco valores únicos entre 0 y 99

pip: instalación de paquetes externos

Las funciones que no están incluidas en la biblioteca estándar se instalan mediante paquetes externos.

bash
# Instalación
pip install requests
pip install pandas numpy matplotlib
# Instalar una versión concreta
pip install requests==2.31.0
# Actualización
pip install --upgrade requests
# Desinstalación
pip uninstall requests
# Lista de paquetes instalados
pip list
# Gestionar dependencias con requirements.txt
pip freeze > requirements.txt # Registra los paquetes instalados actualmente
pip install -r requirements.txt # Instala todos los paquetes registrados

requirements.txt es el archivo que registra los paquetes externos utilizados en el proyecto, lo que permite que otras personas (o servidores) reproduzcan el mismo entorno.


name == "main" — Distinción entre ejecución e importación

python
# greet.py
def hello(name):
print(f"Hello, {name}!")
if __name__ == "__main__":
# Solo se ejecuta al ejecutar directamente este archivo
hello("World")
bash
$ python greet.py # Muestra "Hello, World!"
python
# other.py
import greet # hello("World") no se ejecuta
greet.hello("Python") # Muestra "Hello, Python!"

Al ejecutar python greet.py directamente, __name__ se convierte en "__main__". Si se importa desde otro archivo mediante import greet, __name__ se convierte en "greet". Este patrón permite separar el "código de prueba para la ejecución directa" de la "funcionalidad cuando se utiliza como módulo".


Resumen clave

ConceptoResumen
MóduloUn archivo .py equivale a un módulo
importImporta código de otro archivo
Biblioteca estándarConjunto de módulos listos para usar sin necesidad de instalación (como os, json, datetime, etc.)
pipHerramienta para instalar y gestionar paquetes externos
requirements.txtRegistro de las dependencias del proyecto
__name__Distinción entre ejecución directa e importación

Una de las ventajas de Python es su amplia biblioteca estándar y su extenso ecosistema de terceros (más de 500.000 paquetes en PyPI). Siguiendo el principio de "no reinventar la rueda", es recomendable consultar primero la biblioteca estándar y PyPI antes de implementar una solución directamente, lo que aumenta la productividad.


Patrón práctico: combinar varios módulos

En la práctica, rara vez se utiliza un solo módulo. Lo habitual es combinar varias bibliotecas estándar.

python
import os
import json
from datetime import datetime
def process_data_files(directory):
results = []
for filename in os.listdir(directory):
if not filename.endswith(".json"):
continue
filepath = os.path.join(directory, filename)
with open(filepath, "r", encoding="utf-8") as f:
data = json.load(f)
results.append({
"file": filename,
"records": len(data),
"processed_at": datetime.now().strftime("%Y-%m-%d %H:%M")
})
return results
# output:
# [
# {"file": "users.json", "records": 150, "processed_at": "2026-07-03 14:30"},
# {"file": "orders.json", "records": 423, "processed_at": "2026-07-03 14:30"}
# ]

Explore el archivo con os, léalo con json y registre el tiempo con datetime: estos tres módulos se integran de forma fluida. Este patrón es fundamental para la creación de scripts.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...