“from __future__ imports must occur at the beginni

2019-03-27 05:10发布

The Python script

'''
a
'''

from __future__ import print_function

works well (i.e., does nothing), but

'''
a
'''

'''
b
'''
from __future__ import print_function

causes:

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

Why?


https://docs.python.org/2/reference/simple_stmts.html#future says that:

A future statement must appear near the top of the module. The only lines that can appear before a future statement are:

  • the module docstring (if any),
  • comments,
  • blank lines, and
  • other future statements.

The second example only contains comments and blank lines before the from __future__ import print_function, and yet it doesn't work.

I use Python 2.7.

1条回答
forever°为你锁心
2楼-- · 2019-03-27 05:45

... which seems to be in contradiction with the second example I gave.

No, because those are not comments, they are strings.

The first string is elided from the code as a docstring, but the second string becomes a statement in the code consisting of the string itself. __future__ imports must be before all code-relevant lines, even those that have no effect.

查看更多
登录 后发表回答