Python 我应该用编码信息启动一个py文件吗?

Python 我应该用编码信息启动一个py文件吗?,python,utf-8,formatting,pep8,Python,Utf 8,Formatting,Pep8,你能告诉我应该如何将我的.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

你能告诉我应该如何将我的
.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>
#版权所有(C)2018谷歌公司。
#根据http://www.apache.org/licenses/LICENSE-2.0 
什么是最好的和被接受的方式?

这取决于

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

Python3的默认值是UTF-8

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

如果您还打算支持Python2,并且您有非ASCII字符串文本,那么您应该声明一种编码

如果您的文本编辑器还需要一个编码声明(例如,如果您的Unix语言环境设置为拉丁语-1,但您的代码是UTF-8),那么Python的宽松语法允许对这两种语言使用一个声明,例如,
#-*-编码:UTF-8-*-
被emacs和Python识别

一些官方信息:

# Copyright (C) 2018 Google Inc.
# Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
Python 3关于unicode支持的文档:

介绍编码声明语法的PEP 263:


PEP 3210关于从Python 3.0开始将默认编码从ASCII更改为UTF-8:

可能还值得添加到和的链接,并解释不同编码声明样式之间的差异(基本上,在Python和emacs和/或vi之间共享编码声明)。谢谢,很酷。PEP-8线路和许可证怎么样?@abarnert,谢谢,添加了一些references@MAxShvedov我怀疑你在那件事上能找到任何鼓励。这取决于个人偏好和组织惯例。@DeepSpace我明白了,再次感谢你。IIRC,
#PEP-8
声明是一种“选择加入”,由超级检查工具之一使用,该工具在你的代码上运行一系列格式检查程序、linter等,指定此文件应通过
pep8
检查程序运行,并在出现任何警告时拒绝。如果我没记错的话,它可能已经过时了,因为(a)
pep8
被弃用,取而代之的是
pycodestyle
,以及(b)当前最新的超级检查程序似乎都没有使用此声明,因此它可能是不再维护的两个超级检查程序之一。