2016-07-29 11 views
2

は興味があるだけに、私はfrom __future__ import *を試してみましたが、私はこのエラーを受け取った:インポート将来のすべての機能

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

まあ、理にかなっています。 A __future__インポートは少し特殊で、通常のルールに従わないが、それは私に考えを与えた:どのようにすることができます私はすべての将来の機能をインポートしますか?

答えて

5

あなたはできません。それは設計によるものです。これは、今後さらに__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'] 

注これらは機能ではなく、あなたがしようとしない必要があることを私のコードが壊れた突然のすべてそれらをインポートします。代わりに、どの機能が利用可能か、どのバージョンから提供されているかを記述します。