在python文件中指定编码时,python中的"magic lines(s)"如何工作?

Auf*_*ind 10 python encoding interpreter comments

在python文件的开头(第一行)有时候我会阅读

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

有时候我会读

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

这两行看起来都是一样的:将utf8指定为文件中所有文本的编码.

我有问题:

  1. 为什么这甚至有效?我认为解释器会忽略所有内容,#因为它会调用注释.
  2. 上面两行有什么区别?翻译是否只是忽略-*-

Wil*_*hen 11

这两种形式是等价的.该-*-版本是Emacs理解的一种特殊评论.有关更多信息,请参阅PEP 263.

如果这些表单中的任何一个注释是文件的前两行之一,则解释器将使用指定的编码来读取该文件.