它来自哪里: - * - 编码:utf-8 - * -

ham*_*ene 123 python emacs encoding text file

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

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

我确实在(-*- var: value -*-)之前看过这种指令.它从何而来?什么是完整的规范,例如,值可以包括空格,特殊符号,换行符,甚至-*-本身?

我的程序将编写纯文本文件,我想使用这种格式在其中包含一些元数据.

And*_*ini 79

This way of specifying the encoding of a Python file comes from PEP 0263 - Defining Python Source Code Encodings.

It is also recognized by GNU Emacs (see Python Language Reference, 2.1.4 Encoding declarations), though I don't know if it was the first program to use that syntax.

  • 根据我从Emacs手册中得出的结论,值可以是任何LISP表达式,尤其是双引号字符串 (4认同)

Bor*_*ris 43

# -*- coding: utf-8 -*-是 Python 2 的东西。在 Python 3+ 中,源文件默认编码已经是 UTF-8,该行没有用。

请参阅:我应该在 Python 3 中使用编码声明吗?

pyupgrade是一种可以在代码上运行的工具,用于从 Python 2 中删除那些注释和其他不再有用的剩余部分,例如让所有类都继承自object.


Ale*_*Ott 8

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