python通用规范-3
文章目录
3.1 包和模块
3.2 类
3.3 函数
3.4 变量
3.4.1 变量(`variable`)采用小写加下划线(`lower_with_under`)的风格命名。常量(`constant`)采用大写加下划线(`CAPS_WITH_UNDER`)的风格命名
3.4.2 类或对象的私有成员一般用单下划线`_`开头;对于需要被继承的基类成员,如果想要防止与派生类成员重名,可用双下划线`__`开头。
3.4.3 变量(`variable`)命名要有明确含义,使用完整的单词或大家基本可以理解的缩写,避免使人产生误解
3.5 命名规范推荐表
3.1 包和模块
包(Package)、模块(Module)名使用意义完整的英文描述,采用小写加下划线(lower_with_under)的风格命名
说明:模块应该用小写加下划线的方式(如lower_with_under.py)命名。尽管已经有很多现存的模块使用类似于CapWords.py这样的命名,但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰。
正确示例:
from sample_package import sample_module
from sample_module import SampleClass
1
2
3
3.2 类
类(Class)名使用意义完整的英文描述,采用大写字母开头的单词(CapWords)风格命名
说明:类沿用面向对象语言最常用的CapWords风格命名。
正确示例:
class SampleClass(object):
pass
1
2
3
3.3 函数
函数(Function)、方法(Method)、函数参数(Function Parameters)名使用意义完整的英文描述,采用小写加下划线(lower_with_under)的风格命名
说明: 函数、方法采用小写加下划线的风格命名,与类名做区分。 函数参数采用小写加下划线的风格命名,与一般变量的命名风格保持一致。 模块内部使用的函数用单下划线(_)开头,表示函数是protected的(使用from module1 import *时不会包含)。
正确示例:
def sample_public_function(sample_parameter):
pass
def sample_internal_function(sample_parameter):
pass
class SampleClass(object):
def sample_member_method(self, sample_parameter):
pass
1
2
3
4
5
6
7
8
3.4 变量
3.4.1 变量(variable)采用小写加下划线(lower_with_under)的风格命名。常量(constant)采用大写加下划线(CAPS_WITH_UNDER)的风格命名
说明:
常量使用大写加下划线的风格命名,与变量做区分。
# 正确示例:
sample_global_variable = 0
M_SAMPLE_GLOBAL_CONSTANT = 0
class SampleClass(object):
SAMPLE_CLASS_CONSTANT = 0
def sample_member_methond(self, sample_parameter):
pass
def sample_function():
sample_function_variable = 0
sample_instant_variable = SampleClass()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3.4.2 类或对象的私有成员一般用单下划线_开头;对于需要被继承的基类成员,如果想要防止与派生类成员重名,可用双下划线__开头。
说明: Python没有严格的私有权限控制,业界约定俗成的用单下划线“_”开头来暗示此成员仅供内部使用。双下划线“__”开头的成员会被解释器自动改名,加上类名作为前缀,其作用是防止在类继承场景中出现名字冲突,并不具有权限控制的作用,外部仍然可以访问。双下划线开头的成员应当只在需要避免名字冲突的场景中使用(比如设计为被继承的工具基类)。
# 正确示例:
class MyClass:
def _my_func(self):
member = 1 # 单下划线开头,暗示此成员仅供类的内部操作使用,外部不应该访问。
def _my_private_func(self): # 单下划线开头,暗示此方法仅供类的内部操作使用,外部不应该访问。
pass
class Mapping:
def __init__(self, iterable):
self.items_list = []
self.__update(iterable) # 双下划线开头,会被解释器改名为_Mapping__update。外部如果使用修改后的名字仍可访问
def update(self, iterable):
for item in iterable:
self.items_list.append(item)
__update = update # 作为update方法的私有复制成员,不会跟派生类成员重名
class MappingSubclass(Mapping):
# 和基类同名方法,修改了参数个数,但是不会影响基类__init__
def update(self, keys, values):
for item in zip(keys, values):
self.items_list.append(item)
__update = update # 被解释器改名为_MappingSubclass__update,不会跟基类成员重名
# 参考资料:https://docs.python.org/3/tutorial/classes.html#private-variables
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
3.4.3 变量(variable)命名要有明确含义,使用完整的单词或大家基本可以理解的缩写,避免使人产生误解
说明:
命名中若使用了特殊约定或缩写,建议注释说明。
对于变量命名,除局部循环变量之外,不允许取单个字符(如i、j、k)。
不要用单个字符"l","o“来做变量名称。在有些字体中,这些字符于数字很难1和0很难辨认。若确实需要使
用”l“做变量,用”L"来替换。
# 错误示例:
class SampleClass(object):
pass
def sample_function(sample_parameter):
i = SampleClass()
o = [l for l in range(1)]
# 正确示例:
class SampleClass(object):
pass
def sample_function(sample_parameter):
sample_inst = SampleClass()
number_list = [i for i in range(10)]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3.5 命名规范推荐表
Python之父Guido推荐的命名规范
Type Public Internal
Modules lower_with_under _lower_with_under
Packages lower_with_under
Classes 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
————————————————
版权声明:本文为CSDN博主「zhao12501」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhao12501/article/details/115455304