PEP 236明确指出,所有内容都future_statements
必须出现在模块顶部附近,并且只允许在其前面添加注释,文档字符串等。
我知道这不是编程实践中值得商bat的-这是规则,而且很明确。但是,对于为什么当您未能将自己排future_statement
在最前面(又是警告)时,为什么将其确定为错误而不是仅违反建议的做法,我无法自寻己任。
是否因为这样,导入自己future_statement
将要导入的名称版本的模块将能够覆盖它们,从而确保它们可以正常工作?是否保持某种形式的强代码清晰度,以便__future__
在意外忽略导入的情况下不会因潜在的灾难而破坏正确的编码实践?PEP对此没有启发性,我也找不到找到原因的线索。
__future__
语句可能甚至会影响语法分析(例如:unicode_literals
,print_function
),因为它们可能会修改(或换成其他版本)语法。因此,必须尽早知道它们。它们当然也会对代码生成(division
)产生影响。
因此,除了清楚性方面的考虑之外,还有充分的设计理由可以迫使这些语句在解析和编译的开始。
其他导入的模块对方面对您模块中的操作没有任何影响__future__
。这是一件好事,因为否则其他模块可能会通过print_function
从中导入而破坏您的模块__future__
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句