2011-08-28 33 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__'导入是一个导入语句。但我的观点是,虽然从未来的导入在语法上与任何其他导入相同,但*语义*与香草输入不同。它不仅仅是导入其他符号名称,它还以一种重要的方式改变了解释器的行为。 –

相关问题