为什么Python中的future_statements需要放在所有东西之前?

mec*_*ynx 4 python pep8 pep python-2.7

PEP 236明确指出所有future_statements必须出现在模块的顶部附近,只允许在它们之前使用注释,文档字符串等.

我理解这不是一个有争议的编程实践 - 它是规则而且很清楚.但是,我不能谷歌自己回答为什么当你没有把你的future_statement位置放在最顶层时(而不是警告),为什么决定是一个错误而不是违反推荐的做法.

是因为这样,导入自己导入的名称版本的模块future_statement能够覆盖它们,从而确保它们能正常工作吗?是否要保持某种强大的代码清晰度,以便在__future__导入被意外忽略的情况下,由于潜在的灾难而不会破坏正确的编码实践?PEP对此没有启发,我无法找到任何导致找出原因.

Jon*_*fer 6

__future__声明甚至可能对解析有影响(例如:unicode_literals,print_function),因为它们可能会修改(或者更改为不同版本的)语法.因此必须尽早知道它们.它们当然也会对代码生成产生影响(division).

因此,除了清晰度问题之外,还有很好的设计理由迫使这些语句处于解析和编译的开始.

其他进口模块没有上有什么打算没有任何影响你的模块就__future__.这是一件好事,因为否则其他模块可能会通过导入print_function来破坏您的模块__future__.