好奇,我试过from __future__ import *
,但收到了这个错误:
File "<stdin>", line 1
SyntaxError: future feature * is not defined
嗯,这是有道理的。 __future__
导入有点特殊,并且不遵循常规规则,但它让我思考:如何我导入所有未来的功能?
答案 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
之类的旧版本并没有什么害处,但是一旦功能被使用,那就是无操作了。标准。