web-dev-qa-db-ja.com

「__future__からのインポートはファイルの先頭で発生する必要があります」:ファイルの先頭を定義するものは何ですか?

Pythonスクリプト

'''
a
'''

from __future__ import print_function

うまく機能します(つまり、何もしません)が、

'''
a
'''

'''
b
'''
from __future__ import print_function

原因:

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

どうして?


https://docs.python.org/2/reference/simple_stmts.html#future はこう言います:

将来のステートメントは、モジュールの上部近くに表示される必要があります。 futureステートメントの前に表示できる行は次のとおりです。

  • モジュールdocstring(存在する場合)、
  • コメント
  • 空行、および
  • その他の将来の声明。

2番目の例では、from __future__ import print_functionの前にコメントと空白行のみが含まれていますが、まだ機能しません。

Python 2.7。

9

...これは、2番目の例と矛盾しているようです。

いいえ、コメントではないため、文字列です。

最初の文字列はコードからdocstringとして省略されますが、2番目の文字列は、文字列自体で構成されるコードのステートメントになります。 __future__ imports must before allコードに関連する行(効果のない行も含む)の前。