Python库的命名规范很乱,历来没能作到彻底一致。可是目前有一些推荐的命名标准。新的模块和包(包括第三方框架)应该用这套标准,但当一个已有库采用了不一样的风格,推荐保持内部一致性。程序员
那些暴露给用户的API接口的命名,应该遵循反映使用场景而不是实现的原则。api
有许多不一样的命名风格。这里可以帮助你们识别正在使用什么样的命名风格,而不考虑他们为何使用。 框架
如下是常见的命名方式:socket
也有用惟一的短前缀把相关命名组织在一块儿的方法。这在Python中不经常使用,但仍是提一下。好比,os.stat()函数中包含相似以st_mode,st_size,st_mtime这种传统命名方式命名的变量。(这么作是为了与 POSIX 系统的调用一致,以帮助程序员熟悉它。) 函数
X11库的全部公共函数都加了前缀X。在Python里面不必这么作,由于属性和方法在调用的时候都会用类名作前缀,函数名用模块名作前缀。 字体
另外,下面这种用前缀或结尾下划线的特殊格式是被承认的(一般和一些约定相结合):.net
__double_leading_underscore
:(双下划线开头)当这样命名一个类的属性时,调用它的时候名字会作矫正(在类FooBar中,__boo
变成了_FooBar__boo
;见下文)。__double_leading_and_trailing_underscore__
:(双下划线开头,双下划线结尾)“magic”对象或者存在于用户控制的命名空间内的属性,例如:__init__
,__import__
或者__file__
。除了做为文档以外,永远不要命这样的名。 永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)做为单字符变量名。
在有些字体里,这些字符没法和数字0和1区分,若是想用‘l’,用‘L’代替。code
模块应该用简短全小写的名字,若是为了提高可读性,下划线也是能够用的。Python包名也应该使用简短全小写的名字,但不建议用下划线。
当使用C或者C++编写了一个依赖于提供高级(更面向对象)接口的Python模块的扩展模块,这个C/C++模块须要一个下划线前缀(例如:_socket)对象
类名通常使用首字母大写的约定。
在接口被文档化而且主要被用于调用的状况下,可使用函数的命名风格代替。
注意,对于内置的变量命名有一个单独的约定:大部份内置变量是单个单词(或者两个单词链接在一块儿),首字母大写的命名法只用于异常名或者内部的常量。blog
由于异常通常都是类,全部类的命名方法在这里也适用。然而,你须要在异常名后面加上“Error”后缀(若是异常确实是一个错误)。
咱们但愿这一类变量只在模块内部使用。)约定和函数命名规则同样。
经过 from M import * 导入的模块应该使用all机制去防止内部的接口对外暴露,或者使用在全局变量前加下划线的方式(代表这些全局变量是模块内非公有)。
函数名应该小写,若是想提升可读性能够用下划线分隔。
大小写混合仅在为了兼容原来主要以大小写混合风格的状况下使用(好比 threading.py),保持向后兼容性。
始终要将 self 做为实例方法的的第一个参数。
始终要将 cls 做为类静态方法的第一个参数。
若是函数的参数名和已有的关键词冲突,在最后加单一下划线比缩写或随意拼写更好。所以 class_ 比 clss 更好。(也许最好用同义词来避免这种冲突)
遵循这样的函数命名规则:使用下划线分隔小写单词以提升可读性。
在非共有方法和实例变量前使用单下划线。
经过双下划线前缀触发Python的命名转换规则来避免和子类的命名冲突。
Python经过类名对这些命名进行转换:若是类 Foo 有一个叫 __a
的成员变量, 它没法经过 Foo.__a
访问。(执着的用户能够经过 Foo._Foo__a
访问。)通常来讲,前缀双下划线用来避免类中的属性命名与子类冲突的状况。
注意:关于__names
的用法存在争论。
常量一般定义在模块级,经过下划线分隔的全大写字母命名。例如: MAX_OVERFLOW 和 TOTAL。
其余后续更新:
https://blog.csdn.net/ratsniper/article/details/78954852