我应该在 Python 3 中使用编码声明吗?



Python 3默认使用UTF-8编码作为源代码文件。我是否仍应在每个源文件的开头使用编码声明?喜欢# -*- coding: utf-8 -*-

由于默认值UTF-8,因此只有在偏离默认值或依赖其他工具(如 IDE 或文本编辑器)使用该信息时,才需要使用该声明。

换句话说,就Python而言,只有当你想使用不同的编码时,你才必须使用该声明。

其他工具(例如编辑器)可以支持类似的语法,这就是为什么 PEP 263 规范允许语法具有相当大的灵活性(它必须是注释,文本coding必须在那里,后跟:=字符和可选的空格,然后是公认的编解码器)。

请注意,它仅适用于 Python读取源代码的方式。它不适用于执行该代码,因此不适用于打印、打开文件或任何其他 I/O 操作如何在字节和 Unicode 之间转换。有关 Python、Unicode 和编码的更多详细信息,我强烈建议您阅读 Python Unicode HOWTO,或 Ned Batchelder 非常彻底的Pragmatic Unicode演讲。

否,如果:

  • 整个项目仅使用UTF-8,这是默认值。
  • 并且您确定您的 IDE 工具不需要在每个文件中使用该编码声明。

是的,如果

  • 您的项目依赖于不同的编码
  • 或依赖于许多编码。

对于多编码项目:

如果某些文件在non-utf-8中编码,那么即使对于这些 编码在UTF-8你也应该添加编码声明,因为 黄金法则是Explicit is better than implicit.

参考:

  • PyCharm不需要该声明:

在 pycharm 中为特定文件配置编码

  • vim 不需要该声明,但是:
# vim: set fileencoding=<encoding name> :

最新更新