Categorías de la biblioteca estándar — Cuándo usar qué

Echa un vistazo panorámico a la biblioteca estándar de Python repartida en 7 categorías. Manejo de fechas, trabajo numérico, E/S de datos, concurrencia — averigua qué importar para cada situación.

La biblioteca estándar de Python es el conjunto de cientos de módulos que puedes usar con solo import — sin necesidad de pip install. Este artículo organiza el conjunto entero en 7 categorías para que veas el panorama de un vistazo.

Qué es la biblioteca estándar — Módulos que vienen con Python

La biblioteca estándar es la colección de módulos que funcionan en cuanto instalas Python. Cosas como math, os y json están disponibles con un simple import — nunca tienes que ejecutar pip install para ellas.

Biblioteca estándar vs. biblioteca de terceros
PythonnúcleoBiblioteca estándarmath / json / os…Biblioteca de tercerospandas / requests…incluidapip install
La biblioteca estándar viene con Python, así que no hace falta instalación extra. Las bibliotecas de terceros requieren un pip install aparte.
TipoInstalaciónEjemplos
Biblioteca estándarIncluida con Python (sin instalación)math / os / sys / json / datetime / re / asyncio
Biblioteca de tercerosSe añade con pip installpandas / numpy / requests / fastapi

Hay situaciones en las que la biblioteca estándar no basta, pero probar primero la estándar suele compensar a largo plazo. Aquí está el porqué.

  • No requiere instalación extra, así que se ejecuta en cualquier sitio — servidores internos, CI, contenedores Docker e incluso el runtime del navegador que usa esta serie
  • La gestión de versiones es fácil — una vez fijada la versión de Python, la versión de la biblioteca estándar también queda fijada automáticamente
  • Probada en batalla y estable — la biblioteca estándar evoluciona manteniendo una compatibilidad hacia atrás estricta, así que el código que escribiste hace años todavía funciona

Las 7 categorías por caso de uso

La biblioteca estándar tiene cientos de módulos, pero agruparlos en 7 categorías por propósito hace mucho más fácil saber dónde mirar. Esta serie sigue el mismo orden, recorriendo cada categoría una a una de arriba abajo.

Las 7 categorías de la biblioteca estándar
BibliotecaestándarA Runtimey archivosB Números / fechasaleatorioC Cadenasy textoD E / Sde datosE Estructurasde datos extendidasF Gestiónde recursosG Concurrenciay paralelismo
El nodo central biblioteca estándar se divide en 7 categorías por propósito. Esta serie cubre las 7 en orden, de la A a la G. La categoría G tiene un color diferente debido a las limitaciones del runtime del navegador (se cubren en la siguiente sección).
CategoríaMódulos representativosQué puedes hacer
A Runtime y archivossys / os / pathlib / shutilInspeccionar el runtime, trabajar con archivos y carpetas
B Números, fechas, aleatoriomath / statistics / decimal / datetime / randomTrabajo numérico, cálculo monetario con bajo error, aritmética de fechas, generación de aleatorios
C Cadenas y textore / string / textwrap / pprintExtraer con regex, sustitución por plantilla, ajuste de líneas, impresión bonita
D E/S de datosjson / csv / pickle / base64 / hashlibConvertir objetos a y desde texto o flujos de bytes
E Estructuras de datos extendidascollections / itertools / functools / dataclassesMás allá de list y dict — estructuras de datos más ricas
F Gestión de recursoscontextlib / loggingConstruir tus propios bloques with y emitir registros para código operable
G Concurrencia y paralelismoasyncio / threading / multiprocessingEjecutar trabajo en paralelo

Cada categoría lista varios módulos porque el objetivo es el mismo pero el ángulo es distinto. Por ejemplo, en la categoría B, tanto random como secrets generan números aleatorios, pero random es para juegos y datos de prueba, mientras que secrets devuelve aleatorios fuertes adecuados para casos de seguridad como tokens de restablecimiento de contraseña. Esta serie recorre cada categoría y ordena estos módulos parecidos pero distintos para que sepas a cuál recurrir.

Cómo escribir import — Convenciones que evitan choques de nombres

Hay varias formas de escribir import cuando llamas a la biblioteca estándar (cubierto en detalle en el artículo anterior). Cada una tiene sus ventajas y trampas, así que eliges según la situación. Aquí están los cuatro patrones comunes.

FormaEjemplo de llamadaCuándo encaja
import mathmath.sqrt(2)Lo predeterminado. Cualquiera que lea el código sabe de dónde viene la función
import json as JJ.dumps(data)Cuando quieres un alias corto dentro de un solo archivo (lo mismo vale para los convencionales como np / pd)
from datetime import datetimedatetime(2024, 1, 1)Cuando solo usas 1 o 2 nombres del módulo
from os import *getcwd()Evítalo en general. Es un caldo de cultivo para choques de nombres

La forma import math muestra de dónde vino cada nombre en el sitio de la llamada, así que no te pierdes al releer el código más tarde. Por otro lado, la forma from paquete import función descarta el prefijo del nombre del módulo (la parte que va delante del nombre de la función, como el math. en math.sqrt), lo que te deja escribir las cosas de forma compacta como datetime(2024, 1, 1).

Evita from x import * por norma

Escribir from os import * para traer todos los nombres puede sobrescribir silenciosamente funciones del mismo nombre definidas en otra parte. Por ejemplo, os.open() y la open() integrada son cosas diferentes, pero escribir from os import * reemplaza la open integrada por os.open y rompe la lectura y escritura de archivos. Evítalo tanto en tus propios módulos como en los de la biblioteca estándar — esa es la jugada segura.

Bibliotecas estándar que no se ejecutan en el navegador — Cómo las trata esta serie

Los ejercicios de esta serie corren sobre un runtime de Python basado en navegador (MicroPython o Pyodide). La mayor parte de la biblioteca estándar funciona bien, pero cualquier cosa que necesite hilos o procesos del SO simplemente no se puede hacer funcionar — el sandbox del navegador no lo permite. sys.argv (el mecanismo para recibir argumentos de línea de comandos) también funciona en una máquina real pero no en el navegador, ya que no hay forma de pasar argumentos. Para estos, cubrimos los conceptos con diagramas para que los recuerdes rápido cuando escribas el código en una máquina real.

Qué se ejecuta en el navegador y qué no
Funcionamath / json / redatetime / asyncioLimitadothreading(sin hilos reales)No se ejecutamultiprocessingsubprocessNuestro enfoqueprácticacentrado en diagramassolo diagrama
Pyodide / MicroPython no tienen procesos del SO ni sockets de red, así que las bibliotecas como multiprocessing y subprocess que lanzan algo en el exterior no funcionan. Esta serie las cubre solo con diagramas.
TratamientoMódulos cubiertosRazón
Prácticamath / re / datetime / json / collections / asyncio y muchos másSe ejecutan tal cual en Pyodide / MicroPython
Centrado en diagramas + quizthreading / concurrent.futuresLos hilos reales no se ejecutan en el navegador, pero los conceptos importan en el trabajo del mundo real
Solo diagramamultiprocessing / subprocessSin procesos del SO no se pueden hacer ejercicios prácticos

Por qué cubrimos igualmente los temas solo de diagrama

En el trabajo real, sin duda ejecutarás código sobre un SO de verdad en algún momento. Cuando eso pase, conocer los conceptos detrás de threading vs. multiprocessing o ejecutar un comando con subprocess marca una gran diferencia en lo fácil que es dar ese primer paso. Esta serie no se salta los temas solo porque no se ejecuten en el navegador — en cambio, diagramamos las partes que no se pueden ejecutar para que las recuerdes cuando de verdad necesites escribir el código.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Cuál de las siguientes describe correctamente la diferencia entre una biblioteca estándar y una biblioteca de terceros?

Pregunta 2¿Cuál de las siguientes formas de import deberías evitar en general?