Python命名规范
Python命名规范
命名约定
- 所谓“内部(Internal)”表示仅模块内可用或,者在类内是保护或私有的。
- 用单下划线(
_
)开头表示模块变量或函数是protected的(使用import * from时不会包含)。 - 用双下划线(
__
)开头的实例变量或方法表示类内私有。 - 将相关的类和顶级函数放在同一个模块里。
- 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格),模块名应该用小写加下划线的方式(如lower_with_under.py)。尽管已经有很多现存的模块使用类似于CapWords.py这样的命名,但现在已经不鼓励这样做,因为如果模块名碰巧和类名一致,这会让人困扰。
Python之父Guido推荐的规范:
Type | Public | Internal |
---|---|---|
Modules | lower_with_under | _lower_with_under |
Packages | lower_with_under | |
Classes | CapWords | _CapWords |
Exceptions | CapWords | |
Functions | lower_with_under() | _lower_with_under() |
Global/Class Constants | CAPS_WITH_UNDER | _CAPS_WITH_UNDER |
Global/Class Variables | lower_with_under | _lower_with_under |
Instance Variables | lower_with_under | _lower_with_under (protected) or __lower_with_under (private) |
Method Names | lower_with_under() | _lower_with_under() (protected) or __lower_with_under() (private) |
Function/Method Parameters | lower_with_under | |
Local Variables | lower_with_under |
文件名 全小写,可使用下划线
包 简短、小写的名字。如果下划线可以改善可读性可以加入。如mypackage
。
模块 与包的规范同。如mymodule
。
类 总是使用单词首字母大写。如MyClass
。内部类可以使用前导下划线。
函数&方法 函数名应该为小写,可以用下划线增加可读性。如:myfunction
,my_example_function
。 注意:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。
函数和方法的参数 总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。 如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。
全局变量 对于from M import *
导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线。 注意:应避免使用全局变量
变量 变量名全部小写,由下划线连接各个单词。如color = WHITE
,this_is_a_variable = 1
。 注意:
- 不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。(member,global)
- 私有类成员使用单一下划线前缀标识,多定义公开成员,少定义私有成员。
- 变量名不应带有类型信息,因为Python是动态类型语言。如
iValue
、names_list
、dict_obj
等都是不好的命名。
常量 常量名所有字母大写,由下划线连接各个单词如MAX_OVERFLOW
,TOTAL
。
异常 以Error
作为后缀。
缩写 命名应当尽量全拼写,缩写的情况有如下两种:
- 常用的缩写,如
XML
、ID
等,在命名时也应只大写首字母,如XmlParser
。 - 对某个长单词进行缩写。这时应使用约定成俗的缩写方式。
例如: function 缩写为 fn text 缩写为 txt object 缩写为 obj count 缩写为 cnt number 缩写为 num,等。
前导后缀下划线 一个前导下划线:表示非公有。 一个后缀下划线:避免关键字冲突。 两个前导下划线:当命名一个类属性引起名称冲突时使用。 两个前导和后缀下划线:magic
对象或者属性,例如__init__
或者__file__
。 注意:关于下划线的使用存在一些争议。
特定命名方式 主要是指__xxx__
形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。如
1 | class Base(object): |
其中 id、parent 和 message 都采用了系统保留字命名法。
参考:
https://www.cnblogs.com/rtdd/articles/7337992.html
拓展:
http://www.imooc.com/article/19184?block_id=tuijian_wz#child_5_1
https://blog.csdn.net/xun527/article/details/76180493