1. 模块命名
- 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)
- 因为很多模块文件存与模块名称一致的类,模块采用小写,类采用首字母大写,这样就能区分开模块和类
# 正确的模块名
import decoder
import html_parser
2. 类命名
- 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
class AnimalFarm(Farm):
pass
3. 函数命名
- 函数名一律小写,如有多个单词,用下划线隔开
-
def run():
pass
def run_with_env():
pass
-
类内部函数命名,用单下划线(_)开头(该函数可被继承访问)
-
类内私有函数命名,用双下划线(__)开头(该函数不可被继承访问)
class Person():
def _private_func():
pass
4. 变量命名
- 变量名尽量小写, 如有多个单词,用下划线隔开;类内部变量命名,用单下划线(_)开头(该变量可被继承访问);类内私有变量命名,用双下划线(__)开头(该变量不可被继承访问)
if __name__ == '__main__':
count = 0
school_name = ''
- 常量采用全大写,如有多个单词,使用下划线隔开
MAX_CLIENT = 100
MAX_CONNECTION = 1000
CONNECTION_TIMEOUT = 600
代码规范:
1. 空行
- 空一行:用于类成员函数之间,或者用于区分不同逻辑块
- 空两行:类与类,类与函数,函数与函数之间
class Test(object):
"""Test class,提供通用的方法"""
def __init__(self):
"""Test的构造器:"""
pass
def function1(self):
pass
def function2(self):
pass
def function3():
pass
2. 换行
- 反斜杠
with open('test.txt','w') as file_1, \
open("test2.txt", 'w') as file_2:
file_2.write(file_1.read())
- 字符串
query_str = ('my name'
'is'
' %s') % "Tom"
print query_str
- 二元运算符
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
3. 缩进
- 没有子模块: 一层缩进
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
- 有子模块: 两层缩进
#if and
if (this_is_one_thing
and that_is_another_thing):
do_something()
# function
def long_function_name(
var_one, var_two,
var_three,var_four):
print(var_one)
类别 | 规范 | 示例 |
---|---|---|
模块名 | 小写字母,单词之间用_分割 | ad_stats.py |
包名 | 小写字母,单词之间用_分割 | |
类名 | 单词首字母大写 | AdStats |
全局变量名 | 大写字母,单词之间用_分割 | COLOR_WRITE |
普通变量 | 小写字母,单词之间用_分割 | this_is_a_var |
实例变量 | 以_开头,其他和普通变量一样 | _instance_var |
私有实例变量 | 以__开头(两个下划线),其他和普通变量一样 | __private_var |
专有变量 | 以__开头,__结尾,一般为python的自有变量 | __doc__ |
普通函数 | 小写字母,单词之间用_分割 | get_name() |
私有函数 | 以__开头(两个下划线),其他和普通变量一样 | __get_name() |
文件名 | 全小写,可使用下划线 |