【问题标题】:Should I start a py file with coding information? [duplicate]我应该用编码信息开始一个 py 文件吗? [复制]
【发布时间】:2018-12-11 00:13:00
【问题描述】:

你能告诉我应该如何正式化我的.py 文件吗?

从一些来源我发现所有文件都应该以:

# coding : utf-8
# PEP-8

GitHub 上的一些人这样做:

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

但是,例如,Google 不使用其中任何一个,而是使用许可证信息启动文件:

# Copyright (C) 2018 Google Inc.
# Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>

什么是最好的和被接受的方式?

【问题讨论】:

  • IIRC,# PEP-8 声明是一种“选择加入”,由在您的代码上运行大量格式检查器、linter 等的超级检查器工具之一使用,以指定该文件应通过pep8 检查器运行,如果有任何警告则拒绝。如果我没记错的话,它可能已经过时了,因为(a)pep8pycodestyle 弃用,并且(b)当前最新的超级检查器似乎都没有使用这个声明,所以它是可能是不再维护的两个之一。

标签: python utf-8 formatting pep8


【解决方案1】:

视情况而定。

Python 2 使用 ASCII 作为源文件的默认编码。

Python 3 的默认值为 UTF-8。

因此,如果您打算只支持 Python 3+,那么您不必声明 utf-8 编码,因为它已经是默认编码了。

如果你也打算支持 Python 2 并且你有非 ASCII 字符串文字,那么你应该声明一个编码。

如果您的文本编辑器还需要编码声明(例如,如果您的 Unix 语言环境设置为 Latin-1,但您的代码是 UTF-8),Python 的宽松语法允许对两者使用单个声明——例如,# -*- coding: utf-8 -*- 被 emacs 和 Python 识别。

一些官方信息:

Python 3 关于 unicode 支持的文档:https://docs.python.org/3/howto/unicode.html#python-s-unicode-support

PEP 263 引入了编码声明语法:https://www.python.org/dev/peps/pep-0263/

关于从 Python 3.0 开始将默认编码从 ASCII 更改为 UTF-8 的 PEP 3210:https://www.python.org/dev/peps/pep-3120/

【讨论】:

  • 可能还值得添加指向PEP 263PEP 3120 的链接,并可能解释不同编码声明样式之间的差异(基本上,在Python 和emacs 和/或vi 之间共享编码声明)。
  • 谢谢,很酷。 PEP-8 线路和许可证怎么样?
  • @abarnert,谢谢,添加了一些参考资料
  • @MAxShvedov 我怀疑你会找到任何关于此的 PEP。这取决于个人喜好和组织惯例。
  • @DeepSpace 我知道了,再次感谢。
猜你喜欢
  • 2013-04-27
  • 1970-01-01
  • 2013-01-30
  • 2019-10-21
  • 1970-01-01
  • 2013-04-05
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多