Esistono altri usi per la parola chiave "da" di Python a parte le istruzioni import
?Usi della parola chiave "da" di Python?
risposta
No e sì.
In base allo official Python 2.7.2 grammar, l'unica occorrenza della parola from
è nella clausola import_from
, quindi no.
Nel Python 3.1.3 grammar una nuova clausola
raise_stmt: 'raise' [test ['from' test]]
appare, quindi sì.
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
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.
Volevi postare questo come risposta per un'altra domanda? Sembra solo collegato tangenzialmente a questo ... –
In realtà, importa anche dal modulo '__future__'. –
@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. –
C'è una nuova syntax for delegating to a subgenerator in Python 3.3, che utilizza la parola chiave from
.
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? –
Personalmente non l'ho mai usato - so solo che esiste, ed è pensato per sollevare un'eccezione direttamente causata da un'altra. – rfw