Usos de la palabra clave “from” de Python?

¿Hay otros usos para la palabra clave “from” de Python aparte de las declaraciones de import ?

No y sí.

Según la gramática oficial de Python 2.7.2 , la única aparición de la palabra está en la cláusula import_from , por lo que no.

En la gramática de Python 3.1.3 una nueva cláusula

 raise_stmt: 'raise' [test ['from' test]] 

Aparece, así que sí.

En Python 2.x, el único uso de from es para la statement from x import y . Sin embargo, para Python 3.x, se puede utilizar junto con la statement raise , por ejemplo:

 try: raise Exception("test") except Exception as e: raise Exception("another exception") from e 

Hay una nueva syntax para delegar a un subgenerador en Python 3.3 que usa la palabra clave from .

El siguiente uso

 from __future__ import some_feature 

es sintácticamente idéntico a una statement de importación, pero en lugar de importar un módulo, cambia el comportamiento del intérprete de alguna manera, dependiendo del valor de some_feature .

Por ejemplo, from __future__ import with_statement permite usar Python’s with en Python 2.5, aunque la instrucción with no se agregó al idioma hasta Python 2.6. Debido a que cambia el análisis de los archivos de origen, cualquier importación de __future__ debe aparecer al principio de un archivo de origen.

Consulte la documentación de la statement __future__ para obtener más información.

Consulte la documentación del módulo __future__ para obtener una lista de posibles importaciones __future__ y las versiones de Python en las que están disponibles.

Como hay muchas actualizaciones de python desde el momento de publicar la pregunta, aquí hay un nuevo caso de uso de from keyword en python3 que le mostrará el uso con un ejemplo

 def flatten(l): for element in l: if type(element) == type(list()): yield from flatten(element) else: yield element def flatten2(l): for element in l: if type(element) == type(list()): yield flatten2(element) else: yield element unflatted_list = [1,2,3,4,[5,6,[7,8],9],10] flatted_list = list(flatten(unflatted_list)) flatted_list2 = list(flatten2(unflatted_list)) print(flatted_list) # [1,2,3,4,5,6,7,8,9,10] print(flatted_list2) # [1, 2, 3, 4, , 10]