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

of1yzvn4  于 2023-04-08  发布在  Python
关注(0)|答案(2)|浏览(135)

Python 3默认使用UTF-8编码的源代码文件。我应该在每个源代码文件的开头使用编码声明吗?比如# -*- coding: utf-8 -*-

jtw3ybtb

jtw3ybtb1#

因为默认的 * 是 * UTF-8,所以只有当你偏离默认值时,或者如果你依赖其他工具(比如IDE或文本编辑器)来利用这些信息,你才需要使用这个声明。
换句话说,* 就Python而言 *,只有当你想使用不同的编码时,你才必须使用那个声明。
其他工具,如编辑器,可以支持类似的语法,这就是为什么PEP 263 specification在语法上允许相当大的灵活性(它必须是一个注解,文本coding必须在那里,后跟一个:=字符和可选的空格,后跟一个可识别的编解码器)。
请注意,它只适用于Python * 如何读取源代码 *。它不适用于执行该代码,因此不适用于打印,打开文件或任何其他I/O操作如何在字节和Unicode之间转换。有关Python,Unicode和编码的更多细节,我强烈建议您阅读Python Unicode HOWTO,或Ned Batchelder的非常全面的Pragmatic Unicode talk

at0kjp5o

at0kjp5o2#

否,如果:

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

是,如果

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

对于多编码项目:
如果一些文件是用non-utf-8编码的,那么即使是用UTF-8编码的文件,也应该添加编码声明,因为黄金法则是Explicit is better than implicit.

参考:

  • PyCharm不需要这样的声明:

configuring encoding for specific file in pycharm

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

相关问题