【发布时间】:2017-05-31 12:52:06
【问题描述】:
既然我们在 Python 中使用# 来插入 cmets,那么 Python 是如何处理的:
# -*- coding: utf-8 -*-
不同?
【问题讨论】:
-
这实际上经常发生在软件中。他们实际上对 cmets 进行了一些基本的解析并寻找特定的命令。我想到的另一个例子是 Hypermesh,但我相信还有更多。
-
您可以将其视为在解析器之前运行的预处理器,解析器会查看文件并决定如何对其进行解码。然后解析器本身启动并跳过该行,因为它是一个注释。一些 unixy 文本编辑器做同样的事情来知道编辑器应该如何打开文件。
-
@Ev.Kounis 也许是最突出的例子:en.wikipedia.org/wiki/Shebang_(Unix)
-
值得注意的是,就 Python 而言,
-*-部分是完全可选的,但包含它们似乎是习惯性的。 The docs 说它“也被 GNU Emacs 识别”,这表明这就是它的来源(@tdelaney 关于文本编辑器的一个例子),但我已经在代码中看到它(并自己使用它)这是 Emacs 从未接触过的。 -
@MartijnPieters:我明白了! 如果您在 Python 2 上使用 IDLE,并且 if 您的文件包含非 ASCII 字符(如果我添加了版权行,我经常这样做),那么它会提示您可以使用 Emacs
-*-样式添加编码声明。所以我就是从那里拿起它的。
标签: python unicode encoding utf-8 comments