在python文件中指定编码时,python中的“魔术线”如何工作?

| 在python文件的开头(第一行),有时我阅读
# -*- coding: utf-8 -*-
有时我读
# encoding: utf-8
这两行似乎做相同的事情:将utf8指定为文件中所有文本的编码。 我要提问: 为什么这行得通呢?我以为解释器会忽略
#
之后的所有内容,因为它会调用注释。 上面的两行有什么区别?口译员会忽略ѭ3吗?     
已邀请:
这两种形式是等效的。
-*-
版本是Emacs理解的一种特殊注释。有关更多信息,请参见PEP 263。 如果像上述两种格式中的任何一种注释都是文件的前两行之一,则解释器将使用指定的编码来读取文件。     
之所以有效,是因为实现需要它,所以没有什么神奇的。没有区别,PEP 263定义了所有可能的变体(唯一的区别是第一个是Emacs兼容的)。     

要回复问题请先登录注册