python - 定义Python源代码编码的正确方法

PEP 263定义如何声明 Python 源代码编码。

通常,Python 文件的前 2 行应以:

#!/usr/bin/python
# -*- coding: <encoding name> -*-

但是我看到很多文件都以:

开头
#!/usr/bin/python
# -*- encoding: <encoding name> -*-

=> encoding 而不是 coding

那么声明文件编码的正确方式是什么?

是否允许编码,因为使用的正则表达式是惰性的?还是只是声明文件编码的另一种形式?

我问这个问题是因为 PEP 不谈论 encoding,它只谈论 coding

最佳答案

查看文档 here :

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

"这个表达式的推荐形式是

# -*- coding: <encoding-name> -*-

它也被 GNU Emacs 识别,并且

# vim:fileencoding=<encoding-name>

被 Bram Moolenaar 的 VIM 识别。”

因此,您可以在“编码”部分之前放置几乎任何内容,但如果您想 100% 兼容 python-docs-recommendation,请坚持使用“编码”(不带前缀)。

更具体地说,您需要使用 Python 识别的任何内容以及您使用的特定编辑软件(如果它需要/接受任何内容)。例如。 coding 形式能被 GNU Emacs 识别(开箱即用),但 Vim 不能识别(是的,没有通用协议(protocol),它本质上是一个 turf war)。

https://stackoverflow.com/questions/728891/

相关文章:

python - 使用字典计算列表中的项目

python - 是否可以将已编译的 .pyc 文件反编译为 .py 文件?

python - 为什么 (1 in [1,0] == True) 评估为 False?

c - 如何设置 cron 作业以每小时运行一次可执行文件?

linux - 安装 Jenkins 后无法 su 到用户 jenkins

python - 在pytest中,conftest.py文件有什么用?

linux - 如何通过命令行将图像转换为灰度?

linux - 如何为 bash 命令设置多个环境变量

python - 将字符串打印为十六进制字节

linux - 并排显示两个文件