进口今后所有功能
问题描述:
只是好奇,我想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']
注意,这些都没有的功能,你不应该尝试导入它们。他们反而描述了哪些功能可用,以及它们来自哪个版本。