“怎么说?”;幻线“;在python工作中,当在python文件中指定编码时?

“怎么说?”;幻线“;在python工作中,当在python文件中指定编码时?,python,encoding,comments,interpreter,Python,Encoding,Comments,Interpreter,在python文件的开头(第一行),有时我会读 # -*- coding: utf-8 -*- # encoding: utf-8 有时我也读书 # -*- coding: utf-8 -*- # encoding: utf-8 这两行似乎做了相同的事情:指定utf8作为文件中所有文本的编码 我必须回答以下问题: 为什么这会起作用?我认为解释器会忽略#后面的所有内容,因为它会调用注释 上面两行有什么区别?解释器是否忽略了-*- 这两种形式是等价的。-*-版本是Emacs理解的一种特殊注释

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

# -*- coding: utf-8 -*-
# encoding: utf-8
有时我也读书

# -*- coding: utf-8 -*-
# encoding: utf-8
这两行似乎做了相同的事情:指定utf8作为文件中所有文本的编码

我必须回答以下问题:

  • 为什么这会起作用?我认为解释器会忽略
    #
    后面的所有内容,因为它会调用注释
  • 上面两行有什么区别?解释器是否忽略了
    -*-

  • 这两种形式是等价的。
    -*-
    版本是Emacs理解的一种特殊注释。有关更多信息,请参阅


    如果这两种形式中的注释都是文件前两行中的一行,那么解释器将使用指定的编码来读取文件。

    它可以工作,因为实现会查找它,它没有什么神奇之处。没有区别,所有可能的变体都由定义(唯一的区别是第一个是Emacs兼容的)