进口今后所有功能

问题描述:

只是好奇,我想from __future__ import *,但我收到此错误:进口今后所有功能

File "<stdin>", line 1 
SyntaxError: future feature * is not defined 

嗯,这是有道理的。一个__future__导入是有点特别,不遵循正常的规则,但它让我想到:如何可以我导入所有未来的功能?

你不能,而且这是通过设计。这是因为将来可能会添加更多__future__功能,并且这些功能可能会破坏您的代码。

想象一下,在2.x中,唯一的__future__功能是division。然后在2.y中引入一个新的__future__功能print_function。霎时间我的代码已经突破:

from __future__ import * 
print "Hello, World!" 

可以,然而,进口__future__,并检查其内容:

>>> import __future__ 
>>> [x for x in dir(__future__) if x.islower() and x[0] != '_'] 
['absolute_import', 'all_feature_names', 'division', 'generator_stop', 'generators', 'nested_scopes', 'print_function', 'unicode_literals', 'with_statement'] 

注意,这些都没有的功能,你不应该尝试导入它们。他们反而描述了哪些功能可用,以及它们来自哪个版本。