在python文档中,发现了一个奇怪的地方。
# -*- coding: ascii -*-
上面的代码应该将文件的其余部分的编码格式设置为ASCII。
现在documentation说:
如果Python脚本第一行或第二行中的注释与正则表达式编码[=:] \ s *([-\ w。] +)相匹配,则此注释将作为编码声明处理;此表达式的第一组命名源代码文件的编码。编码声明必须单独出现。如果是第二行,则第一行也必须是仅注释行。推荐的编码表达式形式为
# -*- coding: <encoding-name> -*-
也被GNU Emacs识别,并且
# vim:fileencoding=<encoding-name>
已被Bram Moolenaar的VIM认可。
编码声明必须单独出现在一行上。如果是第二行,则第一行也必须是仅注释行。
我们对此进行了测试,在编码“注释”之前添加了空行。不出所料,编码没有发生。
在文档的上面,我们可以找到:注释被语法忽略。
我很难理解这两条信息如何协同工作,因为它们对我来说是直接矛盾的。
这也让我感到非常奇怪。如果我想更改一段代码的设置,我希望使用某种常量或修改根对象,就像这样。
所以我的问题是:
这是在Python语法中唯一使用注释有意义的情况吗?这种行为从何而来?为什么选择这个?
我以前的理解方式是编辑器设置编码。编辑者可以查找评论,因此对我来说很有意义。但是经过更多研究,事实并非如此,python解释器实际上解决了该注释。这让我感到困惑。
在这个问题上我没有什么可以找到的,只有另一个问题,但是它不能回答我的任何问题。