这是从哪里来的:-*-代码: utf-8-*-

Python 将以下内容识别为定义文件编码的指令:

# -*- coding: utf-8 -*-

我以前肯定见过这种说明书(-*- var: value -*-)。它是从哪里来的?什么是完整的规范,例如,值是否可以包括空格、特殊符号、换行符,甚至是 -*-本身?

我的程序将编写纯文本文件,我想包括一些元数据在他们使用这种格式。

125829 次浏览

这种指定 Python 文件编码的方法来自 PEP 0263-定义 Python 源代码编码

GNUEmacs 也能识别它(参见 Python 语言参考,2.1.4编码声明) ,尽管我不知道它是否是第一个使用这种语法的程序。

这就是所谓的文件局部变量,Emacs 可以理解并相应地设置这些变量。请参阅相应的 在 Emacs 手册中的部分-您可以在文件的页眉或页脚中定义它们

在 PyCharm 里,我会省略这个词。它关闭底部的 UTF-8指示器,并警告该编码是硬编码的。不要认为你需要上面提到的 PyCharm 评论。

# -*- coding: utf-8 -*-是 Python 2的东西。

在 Python 3.0 + 中,源文件 已经是 UTF-8了的默认编码,因此您可以安全地删除该行,因为除非它说的是“ utf-8”的 一些变化以外的内容,否则它没有任何效果。见 我应该在 Python3中使用编码声明吗?


pyupgrade 是一个可以在代码上运行的工具,它可以删除 Python 2中的注释和其他无用的剩余内容,比如让所有类继承自 object