Python编码注释格式

问题描述 投票:4回答:2

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

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

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

# coding=utf-8

这些之间有什么不同吗?编辑兼容,跨平台等怎么样?

那么Python 3呢?这个注释是否仍然需要python 3或者python 3中的任何代码默认为utf-8?

python python-3.x python-2.7 encoding commenting
2个回答
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. 编写代码行的方式在某种程度上是个人选择(只是文档中的推荐),它只需匹配正则表达式。

3
投票

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

docs建议使用这种编码表达式,因为它也被GNU Emacs认可。

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

© www.soinside.com 2019 - 2024. All rights reserved.