Python编码注释格式

时间:2018-09-12 10:08:53

标签: python python-3.x python-2.7 encoding commenting

最初,我学会了以这种方式在Python 2.7中指定源代码编码:

# -*- coding: utf-8 -*-

现在我刚刚注意到,PEP263也允许这样做:

# coding=utf-8

这些之间是否有区别?编辑器的兼容性,跨平台等如何?

Python 3呢? python 3是否仍需要此注释,或者python 3中的任何代码默认情况下应为utf-8?

2 个答案:

答案 0 :(得分:6)

看看PEP3120,它将python源代码的默认编码更改为UTF-8

因此对于python 3.x,在docs中可以找到一个:

  

如果Python脚本的第一行或第二行中的注释匹配   正则表达式编码[=:] \ s *([-\ w。] +),此注释为   作为编码声明[...]的推荐形式   编码表达式为:

# -*- coding: <encoding-name> -*-
     

也被GNU Emacs识别,并且

# vim:fileencoding=<encoding-name>
     

由Bram Moolenaar的VIM识别。   如果未找到编码声明,则默认编码为UTF-8

因此带回家的消息是:

  1. python 3.x不一定要指定utf-8,因为它是默认设置
  2. 编写代码行的方式在某种程度上是个人选择(仅是文档中的建议),它只需要匹配正则表达式即可。

答案 1 :(得分:3)

自Python 3起,默认编码为utf-8。您仍然可以使用特殊格式的注释# -*- coding: <encoding name> -*-更改编码。

docs建议使用此编码表达式,因为GNU Emacs也可以识别该编码表达式。

当python检查前两行是否与正则表达式coding[=:]\s*([-\w.]+)相匹配时,
# coding=utf-8也可以确保utf-8编码,但GNU Emacs无法识别。