Python 将以下内容识别为定义文件编码的指令:
# -*- coding: utf-8 -*-
我之前肯定看到过这种说明(-*- var: value -*-
)。它从何而来?完整的规范是什么,例如,值是否可以包含空格、特殊符号、换行符,甚至 -*-
本身?
我的程序将编写纯文本文件,我想使用这种格式在其中包含一些元数据。
# coding: utf-8
# coding: utf8
开箱即用,即使在 PyCharm 之外也是如此。 (我使用 SublimeText)。
这种指定 Python 文件编码的方式来自 PEP 0263 - Defining Python Source Code Encodings。
它也被 GNU Emacs 识别(参见 Python Language Reference, 2.1.4 Encoding declarations),尽管我不知道它是否是第一个使用该语法的程序。
# -*- coding: utf-8 -*-
是 Python 2 的东西。
在 Python 3.0+ 中,源文件 is already UTF-8 的默认编码,因此您可以安全地删除该行,因为除非它说的不是“utf-8
”的 some variation,否则它没有任何效果。见Should I use encoding declaration in Python 3?
pyupgrade
是一种工具,您可以在代码上运行以从 Python 2 中删除这些注释和其他无用的剩余部分,例如让您的所有类都继承自 object
。
这就是所谓的文件局部变量,它被 Emacs 理解并相应地设置。请参阅相应的 section in Emacs manual - 您可以在文件的页眉或页脚中定义它们
在 PyCharm 中,我会忽略它。它会关闭底部的 UTF-8 指示器,并警告编码是硬编码的。不要认为你需要上面提到的 PyCharm 注释。
test1 = 'äöü'
这样的行,它会提示您将这样的标题添加到文件中。 (pycharm 2019.1)
不定期副业成功案例分享