2011-08-28 13 views

risposta

12

In Python 2.x, l'unico utilizzo di from è per la dichiarazione from x import y. Tuttavia, per Python 3.x, esso può essere utilizzato in combinazione con il raise affermazione, ad esempio:

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

Cosa fa esattamente? L'eccezione originale è implicitamente incatenata in qualche modo? Questo mi sembra non-Pythonic; meglio prenderlo esplicitamente come parametro costruttore ... quindi sicuramente fa qualcos'altro? –

+0

Personalmente non l'ho mai usato - so solo che esiste, ed è pensato per sollevare un'eccezione direttamente causata da un'altra. – rfw

3

Il seguente utilizzo

from __future__ import some_feature 

è sintatticamente identico a un'istruzione import ma invece di importare una modulo, cambia in qualche modo il comportamento dell'interprete, a seconda del valore di some_feature.

Per esempio, from __future__ import with_statement consente di utilizzare with dichiarazione di Python in Python 2.5, anche se la dichiarazione with non è stato aggiunto alla lingua fino a Python 2.6. Poiché modifica l'analisi dei file di origine, è necessario che tutte le importazioni di __future__ vengano visualizzate all'inizio di un file di origine.

Vedere __future__ statement documentation per ulteriori informazioni.

Vedere la __future__ module documentation per una lista di possibili __future__ importazioni e le versioni di Python sono disponibili in.

+1

Volevi postare questo come risposta per un'altra domanda? Sembra solo collegato tangenzialmente a questo ... –

+0

In realtà, importa anche dal modulo '__future__'. –

+2

@Karl: No, non l'ho fatto. Sì, '__future__' è un modulo e l'importazione da' __future__' è un'istruzione import. Ma il mio punto è che mentre importare dal futuro è sintatticamente uguale a qualsiasi altra importazione, la * semantica * è diversa da un'importazione di vaniglia. Non sta solo importando altri nomi di simboli, ma sta anche cambiando il comportamento dell'interprete in un modo importante. –

Problemi correlati