PEP 263定义了如何声明Python源代码编码。
通常,Python文件的前两行应以:
#!/usr/bin/python # -*- coding: <encoding name> -*-
但是我看过很多以以下内容开头的文件:
#!/usr/bin/python # -*- encoding: <encoding name> -*-
=> 编码而不是编码。
那么,声明文件编码的正确方法是什么?
是了编码允许的,因为所使用的正则表达式是懒惰?还是仅仅是声明文件编码的另一种形式?
我问这个问题是因为PEP不在谈论编码,它只是在谈论编码。
在这里检查文档:
“如果Python脚本的第一行或第二行中的coding[=:]\s*([-\w.]+)注释与正则表达式匹配,则此注释将作为编码声明处理”
coding[=:]\s*([-\w.]+)
“此表述的推荐形式是
# -*- coding: <encoding-name> -*-
GNU Emacs也承认这一点,并且
# vim:fileencoding=<encoding-name>
被Bram Moolenaar的VIM认可。”
因此,你可以在“编码”部分之前放置几乎所有内容,但如果要100%兼容python-docs-recommendation,则应坚持使用“编码”(无前缀)。
更具体地说,你需要使用Python可以识别的任何东西以及你使用的特定编辑软件(如果它完全需要/接受任何东西)。例如,coding表格被GNU Emacs识别(开箱即用),但未被Vim识别(是的,没有普遍的协议,这本质上是一场草皮大战)。
codin