Python 3.x 在Python3中,为什么编码声明可以作为注释编写?

Python 3.x 在Python3中,为什么编码声明可以作为注释编写?,python-3.x,encoding,character-encoding,Python 3.x,Encoding,Character Encoding,Python语言参考的第2.1.3节说: 注释被语法忽略 虽然我不能完全确定这一点,但我相信这意味着Python Intepreter将忽略注释 相反,第2.1.4节规定: 如果Python脚本第一行或第二行中的注释与正则表达式编码[=:]\s*[-\w.]+匹配,则此注释将作为编码声明处理 这似乎也是一个关于Python解释器的事实陈述:如果注释位于脚本的第一行或第二行,它不会忽略注释,只要它与表达式coding[=:]\s*[-\w]匹配即可+ 关于口译员的这两种说法不矛盾吗?到底怎么回事

Python语言参考的第2.1.3节说:

注释被语法忽略

虽然我不能完全确定这一点,但我相信这意味着Python Intepreter将忽略注释

相反,第2.1.4节规定:

如果Python脚本第一行或第二行中的注释与正则表达式编码[=:]\s*[-\w.]+匹配,则此注释将作为编码声明处理

这似乎也是一个关于Python解释器的事实陈述:如果注释位于脚本的第一行或第二行,它不会忽略注释,只要它与表达式coding[=:]\s*[-\w]匹配即可+


关于口译员的这两种说法不矛盾吗?到底怎么回事

关于文档的清晰性,您的观点是正确的

然而,与许多其他语言HTML、XML、JSON 2017年之前的标准*,源文件/文档的字符编码在任何语言词汇或语法处理之前确定。因此,可以正确地说,语法忽略了注释。因为一旦确定了字符编码,处理将重新启动,语法处理将忽略所有注释

从某种意义上讲,有两种语言:一种用于表示字符编码;2用于表示Python脚本。第一个是设计的,所以它被接受,但对第二个没有意义

后续的JSON标准将允许的字符编码集从UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE简化为UTF-8。
易于理解的第2.1.4节是第2.1.3节的例外。在Python文档和其他软件中,您会发现许多与这些规则类似的规则和异常。因此,如果注释位于Python脚本的第一行或第二行,并且与正则表达式编码[=:]\s*[-\w.]+匹配,解释器不会忽略注释。但是为什么第2.1.3节不说注释在语法中通常被忽略,除非?在我看来,这就是你应该如何写一个语言引用,否则你就有可能让读者怀疑在整个引用中是否隐藏了其他异常。如果你愿意,你可以提出一个pull请求!对于如此庞大的项目,几乎不可能将文档保持在100%一致的状态。不幸的是,现实生活就是这样™ 作品请参阅文档中当前已知问题的列表。请随意提交一份修改意见。@Selcuk我不确定您是否阅读了我所做的编辑,但不管怎样,您是否知道该规则中关于注释如何被语法忽略的任何其他例外情况?我想确保,当我提出拉请求时,一切都正常。