Series

Palabras clave en Python: from

Leodanis Pozo Ramos
Leodanis Pozo Ramos
21 ene 2026 3 min
Palabras clave en Python: from

En Python, la palabra clave from se utiliza principalmente para importar módulos y sus componentes específicos de manera que puedas usarlos directamente en tu código.

Esta palabra clave se emplea generalmente en combinación con import y permite acceder solo a objetos específicos de un módulo sin cargar todo el contenido del módulo.

Además, from tiene otros usos en Python:

  • Con raise: Encadena excepciones y preserva el contexto del error original.
  • Con yield: Delega la iteración a otro generador o iterable.

Sintaxis

La sintaxis básica para utilizar from junto con import es la siguiente:

from module_name import specific_component

Si necesitas crear un alias para evitar conflictos de nombres o simplificar el uso, puedes usar as:

from module_name import specific_component as alias

También puedes importar múltiples componentes separados por comas:

from module_name import component1, component2

Además, puedes usar * para importar todos los componentes del módulo:

from module_name import *

Esta sintaxis se conoce como wildcard import y es común en secciones de trabajo interactivas. Sin embargo, no se recomienda usarla en código en producción pues puede causar conflictos de nombres y dificultar la depuración.

Sintaxis para el uso con raise:

raise NewException("mensaje") from original_exception

Si deseas suprimir el contexto de la excepción original, puedes usar None:

raise NewException("mensaje") from None

Sintaxis para el uso con yield:

yield from iterable

Esta sintaxis equivale a iterar sobre el iterable y producir cada elemento uno por uno.

Ejemplos prácticos

Aquí hay algunos ejemplos que ilustran cómo se usa la palabra clave from:

>>> from math import pi
>>> pi
3.141592653589793

En este ejemplo, solo se importa pi del módulo math, permitiéndote usarlo directamente sin tener que prefijarlo con math.

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> future = now + timedelta(days=5)
>>> future
datetime.datetime(2023, 10, 27, 15, 34, 50, 401213)

En este ejemplo, se importan datetime y timedelta del módulo datetime. Esto permite trabajar con fechas y tiempos de manera más directa.

A continuación, un ejemplo de encadenamiento de excepciones con raise from:

>>> def connect_to_database(connection_string):
...     try:
...         # Código de conexión
...         raise ConnectionError("no se pudo conectar al servidor")
...     except ConnectionError as error:
...         raise RuntimeError("error en la base de datos") from error
...

>>> connect_to_database("localhost:5432")
Traceback (most recent call last):
    ...
ConnectionError: no se pudo conectar al servidor

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
    ...
RuntimeError: error en la base de datos

En este ejemplo, se preserva la excepción original (ConnectionError) como causa directa del nuevo error (RuntimeError).

Finalmente, un ejemplo de delegación de iteración con yield from:

>>> def combine(first, second):
...     yield from first
...     yield from second
...

>>> list(combine([1, 2], [3, 4]))
[1, 2, 3, 4]

En este ejemplo, yield from delega la iteración a cada lista, produciendo sus elementos sin necesidad de un bucle explícito.

Uso de from

Los casos de uso más comunes de la palabra clave from incluyen los siguientes:

  • Importar componentes específicos de un módulo para mantener el namespace limpio y mejorar la legibilidad.
  • Evitar conflictos de nombres al importar solo lo necesario.
  • Hacer el código más limpio y fácil de entender al eliminar la necesidad de prefijos de módulo para componentes importados.
  • Permitir la importación de múltiples componentes de un módulo en una sola línea.
  • Encadenar excepciones con raise ... from ... para preservar el contexto del error original.
  • Delegar la iteración a otro generador o iterable con yield from.

Resumiendo

La palabra clave from en Python es una herramienta versátil con múltiples usos: importar componentes específicos de módulos, encadenar excepciones con raise y delegar iteraciones con yield.

Dominar estos usos te permite escribir código más claro, modular y expresivo en diferentes contextos de programación.