2016-07-31 7 views
4

Das Python-Skript"von __future__ importieren müssen am Anfang der Datei auftreten": Was definiert den Anfang der Datei?

''' 
a 
''' 

from __future__ import print_function 

funktioniert gut (das heißt, tut nichts), aber

''' 
a 
''' 

''' 
b 
''' 
from __future__ import print_function 

Ursachen:

File "C:\test.py", line 8 
    from __future__ import print_function 
SyntaxError: from __future__ imports must occur at the beginning of the file 

Warum?


https://docs.python.org/2/reference/simple_stmts.html#future sagt, dass:

Eine Zukunft Aussage in der Nähe der Oberseite des Moduls erscheinen. Die einzigen Linien, die vor einer zukünftigen Aussage erscheinen können, sind:

  • das Modul docstring (falls vorhanden),
  • Kommentare,
  • Leerzeilen und
  • andere zukünftige Aussagen.

Das zweite Beispiel enthält nur Kommentare und Leerzeilen vor den from __future__ import print_function, und es ist noch nicht funktionieren.

Ich benutze Python 2.7.

+1

ein wenig Forschung geht einen langen Weg. Beginnen Sie mit der offiziellen Dokumentation: https://docs.python.org/2/reference/simple_stmts.html#future –

+0

@BryanOakley Danke, die Dokumentation, die Sie verlinkt haben, zeigt an, dass Kommentare vor der 'from __future__ import print_function' platziert werden können scheint im Widerspruch zu dem zweiten Beispiel zu stehen, das ich gab. –

+1

Im zweiten Beispiel haben Sie das Modul docstring, dann haben Sie _another_ Tripel-Anführungszeichen. Diese zweite Zeichenfolge ist weder ein Kommentar noch ein Docstring. –

Antwort

11

... das scheint im Widerspruch zu dem zweiten Beispiel zu stehen, das ich gab.

Nein, denn das sind keine Kommentare, sie sind Strings.

Die erste Zeichenfolge wird aus dem Code als Docstring entfernt, aber die zweite Zeichenfolge wird zu einer Anweisung im Code, der aus der Zeichenfolge selbst besteht. __future__ Importe müssen vor alle codelevanten Zeilen sein, auch solche, die keine Wirkung haben.

Verwandte Themen