导入所有未来的功能

时间:2016-07-29 01:20:55

标签: python import

好奇,我试过from __future__ import *,但收到了这个错误:

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

嗯,这是有道理的。 __future__导入有点特殊,并且不遵循常规规则,但它让我思考:如何我导入所有未来的功能?

2 个答案:

答案 0 :(得分:10)

你不能,而且这是设计的。这是因为将来可能会添加更多__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']

请注意,这些不是功能,您不应尝试导入它们。他们改为描述哪些功能可用,以及它们的版本。

答案 1 :(得分:0)

当前最大导入量为:

from __future__ import absolute_import, division, print_function, unicode_literals

如果我不得不猜测的话,这会一直很好,直到2020年Python 2.7系列结束。包括诸如generators之类的旧版本并没有什么害处,但是一旦功能被使用,那就是无操作了。标准。