2011-08-28 25 views

回答

12

在Python 2.x中,唯一使用from的是from x import y語句。然而,對於Python的3.x中,可以配合使用的raise語句,如:

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

這是幹什麼的?原始異常是否以某種方式隱式鏈接?這對我來說似乎是非Pythonic;最好明確地把它作爲一個構造參數...所以它肯定會做別的事情? –

+0

就我個人而言,我從來沒有用過它 - 我只知道它存在,它的目的是爲了引發另一個直接導致的異常。 – rfw

3

下使用

from __future__ import some_feature 

是語法上等同於一個import語句,但不是導入模塊,它會以某種方式更改解釋器的行爲,具體取決於some_feature的值。

例如,from __future__ import with_statement允許您在Py​​thon 2.5中使用Python的with語句,即使在Python 2.6之前沒有將with語句添加到語言中。因爲它會更改源文件的解析,所以任何__future__導入都必須出現在源文件的開頭。

有關更多信息,請參閱__future__ statement documentation

可能的__future__進口的列表和Python版本,他們都在使用,請參見__future__ module documentation

+1

您是否想要將此發佈爲另一個問題的答案?它似乎只與這一個切線相關...... –

+0

實際上,它也從'__future__'模塊導入。 –

+2

@Karl:不,我沒有。是的,'__future__'是一個模塊,從'__future__'導入是一個導入語句。但我的觀點是,雖然從未來的導入在語法上與任何其他導入相同,但*語義*與香草輸入不同。它不僅僅是導入其他符號名稱,它還以一種重要的方式改變了解釋器的行爲。 –

相關問題