目录
命名参考网站
Python命名规则
1、包命名 mypackage,package_name
2、模块命名 mymodule.py,module_name.py
3、类命名 MyClass,ClassName
4、函数命名
1)普通函数 myfunction(),my_function_name()
2)私有函数(外部访问会报错) __get_name()
3)函数和方法的参数 parameter,function_parameter_name
5、变量命名
变量定义
1)类变量(全局变量名) COLOR_WRITE,GLOBAL_VAR_NAME
2)常量 MAX_OVERFLOW,TOTAL
3)普通变量 this_is_a_var ,local_var_name
4)实例变量 _instance_var
5)私有实例变量(外部访问会报错) __private_var
6)专有变量 __class__
6、异常命名 ExceptionNameError
7、缩写
8、前导后缀下划线
9、Python关键字
10、Python内置函数
Python代码规范
1、代码行长度
2、引号的使用
3、空行的使用
1)模块中,函数,类定义之间,空2行
2)类成员函数之间,空1行
3)在二元运算符两边,各空一格 [=,-,+=,==,>,in,is not, and]
4)函数的参数列表中,逗号之后,要有空格
5)函数的参数列表中,默认值等号两边,不要添加空格
6)左括号之后,右括号之前,不要加多余的空格
7)字典对象的左括号之前,不要多余的空格
8)不要为对齐赋值语句,而使用额外空格
4、import 语句
1)单独import时,不要在一行导入多个;
2)from ... import可以在一行导入多个
3)import语句应该使用 absolute import
4)import语句书写位置
5)如果发生命名冲突,则可使用命名空间
5、换行
1)禁止复合语句,即一行中包含多个语句
2)if/for/while一定要换行
3)支持括号内的换行
4)使用反斜杠\换行,二元运算符+ .等应出现在行末
6、注释
1)块注释
2)行注释
3)文档注释(Docstring)
4)重要的注释
7、模块
标识符例子:
注意说明:
class Base(object):
def __init__(self, id, parent = None):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid):
注意说明:
下划线,对解释器有特殊的意义,是内建标识符所使用的符号,建议程序员避免用下划线作为变量名的开始;
查看关键字:
#导入keyword 模块
import keyword
#显示所有关键字
keyword.kwlist
输出结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
abs() | all() | any() | basestring() | bin() |
bool() | bytearray() | callable() | chr() | classmethod() |
cmp() | compile() | complex() | delattr() | dict() |
dir() | divmod() | enumerate() | eval() | execfile() |
file() | filter() | float() | format() | frozenset() |
getattr() | globals() | hasattr() | hash() | help() |
hex() | id() | input() | int() | isinstance() |
issubclass() | iter() | len() | list() | locals() |
long() | map() | max() | memoryview() | min() |
next() | object() | oct() | open() | ord() |
pow() | print() | property() | range() | raw_input() |
reduce() | reload() | repr() | reversed() | zip() |
round() | set() | setattr() | slice() | sorted() |
staticmethod() | str() | sum() | super() | tuple() |
type() | unichr() | unicode() | vars() | xrange() |
Zip() | __import__() | apply() | buffer() | coerce() |
intern |
def fun1():
pass
def fun2():
pass
class MyClass:
pass
def __init__(self):
pass
def hello(self):
pass
正确的写法
i = i + 1
submitted += 1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
不推荐的写法
i=i+1
submitted +=1
x = x2 - 1
hypot2 = xx + y*y
c = (a+b) * (a-b)
正确的写法
def complex(real, imag):
pass
不推荐的写法
def complex(real,imag):
pass
正确的写法
def complex(real, imag=0.0):
pass
不推荐的写法
def complex(real, imag = 0.0):
pass
正确的写法
spam(ham[1], {eggs: 2})
不推荐的写法
spam( ham[1], { eggs : 2 } )
正确的写法
dict['key'] = list[index]
不推荐的写法
dict ['key'] = list [index]
正确的写法
x = 1
xy = 2
不推荐的写法
x = 1
xy = 2
正确的写法
import os
import sys
不推荐的写法
import sys,os
正确的写法
from subprocess import Popen, PIPE
正确的写法
from foo.bar import Bar
不推荐的写法
from …bar import Bar
import语句应该放在文件头部,置于模块说明及docstring之后,于全局变量之前;
import语句应该按照顺序排列,每组之间用一个空行分隔;
import os
import sys
import msgpack
import zmq
import foo
导入其他模块的类定义时,可以使用相对导入;
from myclass import MyClass
import bar
import foo.bar
bar.Bar()
foo.bar.Bar()
正确的写法
do_first()
do_second()
do_third()
不推荐的写法
do_first();do_second();do_third();
正确的写法
if foo == 'blah':
do_blah_thing()
不推荐的写法
if foo == 'blah': do_blash_thing()
foo = fun(
var_one, var_two, # 起始括号就换行,第二行缩进 4 个空格
var_three, var_four) # 第二行缩进到括号的起始处
# 块注释
mystr = 'hello'
mystr = 'hello' # 行注释
docstring 的首行不换行, 如有多行,结束"""应该独占一行,除非此 docstring 只有一行。
"""Return a foobar
公共模块文档注释
"""
"""类、方法、函数文档注释"""
文档注释,一般是放在自定义的模块/类/方法/函数的第一行,添加功能说明,可以使用.__doc__获取对应说明;
def myfunction():
"""我的文档注释说明"""
print("文档注释")
print(myfunction.__doc__)
输出结果:我的文档注释说明
不要在文档注释复制函数定义原型, 而是具体描述其具体内容, 解释具体参数和返回值等
# 不推荐的写法(不要写函数原型等废话)
def function(a, b):
"""function(a, b) -> list"""
... ...
# 正确的写法
def function(a, b):
"""计算并返回a到b范围内数据的平均值"""
... ...
对函数参数、返回值等的说明采用numpy标准, 如下所示
def func(arg1, arg2):
"""在这里写函数的一句话总结(如: 计算平均值).
这里是具体描述.
参数
----------
arg1 : int
arg1的具体描述
arg2 : int
arg2的具体描述
返回值
-------
int
返回值的具体描述
参看
--------
otherfunc : 其它关联函数等...
示例
--------
示例使用doctest格式, 在`>>>`后的代码可以被文档测试工具作为测试用例自动运行
>>> a=[1,2,3]
>>> print [x + 3 for x in a]
[4, 5, 6]
"""
文档注释不要中英文混用,通常一两句话能把情况说清楚即可
模块、公有类、公有方法, 能写文档注释的, 应该尽量写文档注释
# =====================================
# 请勿在此处添加 get post等app路由行为 !!!
# =====================================