“来自__future__导入必须出现在文件的开头”:什么定义了文件的开头?

时间:2016-07-31 21:20:26

标签: python comments

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说:

  

未来声明必须出现在模块顶部附近。唯一的   可以出现在未来声明之前的行是:

     
      
  • 模块docstring(如果有),
  •   
  • 评论
  •   
  • 空行
  •   
  • 其他未来的陈述。
  •   

第二个示例仅在from __future__ import print_function之前包含注释和空行,但它不起作用。

我使用Python 2.7。

1 个答案:

答案 0 :(得分:14)

  

......这似乎与我给出的第二个例子相矛盾。

不,因为那些不是评论,所以它们是字符串。

第一个字符串作为docstring从代码中删除,但第二个字符串成为由字符串本身组成的代码中的语句。 __future__导入必须所有与代码相关的行之前,即使是那些无效的行。