2016-07-29 22 views
2

Einfach nur neugierig, habe ich versucht, from __future__ import *, aber ich erhielt diesen Fehler:Import alle zukünftigen Features

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

Nun, das macht Sinn. Ein __future__ Import ist ein wenig speziell und folgt nicht den normalen Regeln, aber es hat mich zu denken: Wie kann ich alle zukünftigen Funktionen importieren?

Antwort

5

Sie können nicht, und das ist von Entwurf. Dies liegt daran, dass in Zukunft möglicherweise mehr __future__ Funktionen hinzugefügt werden, die Ihren Code beschädigen können.

Stellen Sie sich vor, dass in 2.x die einzige __future__-Funktion division war. Dann wird in 2.y ein neues __future__-Merkmal, print_function, eingeführt. Ganz plötzlich mein Code gebrochen:

from __future__ import * 
print "Hello, World!" 

Sie können jedoch __future__ importieren und überprüfen seinen Inhalt:

>>> 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'] 

Beachten Sie, dass diese nicht Features sind und Sie sollten nicht versuchen, importiere sie. Sie beschreiben stattdessen, welche Funktionen verfügbar sind und von welchen Versionen sie sind.

Verwandte Themen