PEP8命名规范
Todo
- Class Name中一段的翻译;
总则 Overriding Principle
API公开给使用者部分的命名应当能明确地反映出其用途。
命名方式简述 Descriptive: Naming Styles
常见命名方法如下:
- 单个小写字母,如
b
; - 单个大写字母,如
B
; - 小写单词,如
lowercase
; - 以下划线分隔的小写单词,如
lower_case_with_underscores
; - 大写单词,如
UPPERCASE
; - 以下划线分隔的大写单词,如
UPPER_CASE_WITH_UNDERSCORES
; - 驼峰命名法,若有缩写名词则全字母大写,如
CapitalizedWords
; - 首字母小写的驼峰,如
mixedCase
; - 用下划线分隔单词的驼峰(巨丑,不推荐)。
Python中使用的四种特殊命名形式:
_single_leading_underscore
以单下划线开头表示只供内部使用;single_trailing_underscore_
以单下划线结尾用于避免和Python关键字冲突;__double_leading_underscore
以双下划线开头会在类内部被改变名字来避免被外部使用;__double_leading_and_trailing_underscore__
以双下划线开头和结尾表示特殊对象或者属性,不要尝试自创这样的变量。
Python命名法 Prescriptive: Naming Conventions
避免使用的名字 Names to Avoid
小写的l
(klm),大写的O
(nop),大写的I
(hij),不要把这三个字母用作单字母变量,会和数字0
和1
傻傻分不清楚~
包和模块的命名 Package and Module Names
- 模块名应当使用全小写字母,并且越短越好。必要时可以使用下划线来增强可读性。
- 包名也应当使用全小写字母,并且越短越好。但是不能使用下划线。
用C/C++写的Python模块以单下划线开头?(存疑)
When an extension module written in C or C++ has an accompanying Python module that provides a higher level (e.g. more object oriented) interface, the C/C++ module has a leading underscore (e.g.
_socket
)。
类名 Class Names
类名应该使用驼峰命名法。
这段不会翻译:
The naming convention for functions may be used instead in cases where the interface is documented and used primarily as a callable.
注意:类内部属性等的名字大多是一两个单词,命名方式与类名不同,后面会提到。只有两个例外——内建异常名和内建常量使用驼峰命名法。
异常命名 Exception Names
异常的类型是class,所以遵循class的命名规则,使用驼峰命名法。另外,如果你定义的异常实际上是一个error,命名时要加Error
的后缀。
全局变量命名 Global Variable Names
(我们希望全局变量是只用在一个模块中的全局变量)。全局变量的命名与函数命名相同(以下划线分隔的小写单词)?(存疑)
(Let’s hope that these variables are meant for use inside one module only.) The conventions are about the same as those for functions.
模块如果被设计成由from M import *
的方式来被导入,并且全局变量是不公开的话,那么应当使用__all__
来阻止暴露全局变量;或者使用老的加前缀命名方式,例如下划线前缀。
函数命名 Function Names
函数命名应当是全小写字母,以下划线分隔单词以提高可读性。
首字母小写的驼峰命名法仅适用于已经成为主流的模块中的内容,例如threading.py
,以保证向下的兼容性。
函数和方法的参数 Function and method arguments
实例方法的第一个参数永远是self
,类方法的第一个参数永远是cls
。
如果一个函数的参数名与Python关键字冲突,那么最好在参数名后缀单下划线,而不是使用缩写或者错误的拼写。举个栗子,class_
要比clss
好。当然最好的方式是使用同义词来避免这样的冲突。
方法名和实例变量 Method Names and Instance Variables
使用函数命名规则:即使用全小写字母,以下划线分隔单词以提高可读性。
不公开的方法和实例变量名称应该以单下划线开头。
下面几段看不太懂:
To avoid name clashes with subclasses, use two leading underscores to invoke Python’s name mangling rules.
Python mangles these names with the class name: if class Foo has an attribute named
__a
, it cannot be accessed byFoo.__a
. (An insistent user could still gain access by callingFoo._Foo__a
.) Generally, double leading underscores should be used only to avoid name conflicts with attributes in classes designed to be subclassed.
Note: there is some controversy about the use of
__names
(see below).
常量名 Constants
以下划线分隔的全大写单词。