Answer a question

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.

Answers

... 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.

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐