为什么 Python 中的 future_statements 需要放在所有内容之前?
Why do future_statements in Python need to be placed before everything?
PEP 236 明确指出所有 future_statements
必须出现在模块的顶部附近,在它们之前只允许有注释、文档字符串等。
我知道这作为一种编程实践是没有争议的 - 这是规则而且很明确。但是,我无法 google 自己回答 为什么 当您未能将 future_statement
在最上面(也就是警告)。
是否因为这样,导入自己版本的名称的模块将能够覆盖 future_statement
将导入的名称,从而确保它们能够正常工作?是否要保持某种强大的代码清晰度,以便在 __future__
导入被意外忽略时不会因为潜在的灾难而破坏正确的编码实践? PEP 对此没有启发,我找不到任何线索来找出原因。
猜测是为了避免以下这种情况:
print "yo"
from __future__ import print_function
打印语句是否有语法错误?这取决于将来的导入是适用于整个文件还是仅从那一点开始。最好明确指出不是顶部导入的错误。
__future__
语句甚至可能对解析产生影响(例如:unicode_literals
、print_function
),因为它们可能会修改(或者更确切地说切换到不同版本的)语法。因此,必须尽早知道它们。它们当然也会对代码生成产生影响 (division
)。
因此,除了清晰度问题之外,还有充分的设计理由强制这些语句位于解析和编译的开始位置。
其他导入的模块对您的模块中关于__future__
的内容没有任何影响。这是一件好事,否则其他模块可能会通过从 __future__
.
导入 print_function
来破坏您的模块
PEP 236 明确指出所有 future_statements
必须出现在模块的顶部附近,在它们之前只允许有注释、文档字符串等。
我知道这作为一种编程实践是没有争议的 - 这是规则而且很明确。但是,我无法 google 自己回答 为什么 当您未能将 future_statement
在最上面(也就是警告)。
是否因为这样,导入自己版本的名称的模块将能够覆盖 future_statement
将导入的名称,从而确保它们能够正常工作?是否要保持某种强大的代码清晰度,以便在 __future__
导入被意外忽略时不会因为潜在的灾难而破坏正确的编码实践? PEP 对此没有启发,我找不到任何线索来找出原因。
猜测是为了避免以下这种情况:
print "yo"
from __future__ import print_function
打印语句是否有语法错误?这取决于将来的导入是适用于整个文件还是仅从那一点开始。最好明确指出不是顶部导入的错误。
__future__
语句甚至可能对解析产生影响(例如:unicode_literals
、print_function
),因为它们可能会修改(或者更确切地说切换到不同版本的)语法。因此,必须尽早知道它们。它们当然也会对代码生成产生影响 (division
)。
因此,除了清晰度问题之外,还有充分的设计理由强制这些语句位于解析和编译的开始位置。
其他导入的模块对您的模块中关于__future__
的内容没有任何影响。这是一件好事,否则其他模块可能会通过从 __future__
.
print_function
来破坏您的模块