一、Python编码规范(PEP 8)/工程结构化
2021-03-14 01:29
标签:应用 操作 hang 返回 错误 表示 对齐 其他 应用程序 1.主动换行 2.合理使用括号去实现隐式连接 3.使用圆括号实现隐士连接 不建议使用\ 进行显示连接 4.注释中,如果出现URL,一定要写在一行 5.不要在返回值或着条件语句中使用括号,除非需要数学计算或者行连接 6.函数变量与起始变量对齐 7.四个空格缩进 8.顶级定义之间空2行,方法定义之间空1行 pycharm编辑器的格式化是遵循PEP8规范的,pycharm中,选择工具栏的code--》reformat code 进行格式化 9.括号里不要有空格 10.逗号,冒号,分号后面加空格 11.不要用空格垂直对齐注释 12.文档注释(文档字符串--docstring) 13.代码块中,对于复杂的操作, 应该在其操作开始前写上若干行注释. 对于不是一目了然的代码, 应在其行尾添加注释.绝不要描述代码 14.如果一个类不继承其他类,就显式的从object继承,嵌套类也是一样 15. 避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建不必要的临时对象, 并且导致二次方而不是线性的运行时间. 作为替代方案, 你可以将每个子串加入列表, 然后在循环结束后用 .join 连接列表 16.为多行字符串使用三重双引号“”“,而非三重单引号。当且仅当项目中使用单引号‘来引用字符串时, 才可能会使用三重‘‘‘ 17. 关闭类文件对象的方法,对于不支持使用"with"语句的类似文件的对象,使用contextlib.closing(): 注意:扩展:同时含有‘__enter__‘, ‘__exit__‘, 这2个属性的文件,才支持with。没有这2个属性,不支持with打开文件的,就要使用上面的方法。
18. 为临时代码使用TODO注释, 它是一种短期解决方案. 不算完美, 但够好了.TODO注释应该在所有开头处包含"TODO"字符串, 紧跟着是用括号括起来的你的名字, email地址或其它标识符. 然后是一个可选的冒号. 接着必须有一行注释, 解释要做什么. 主要目的是为了有一个统一的TODO格式 19.每个导入独占一行 导入顺序: 20.在没有else的情况下,if语句可以单独在一行 21.用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含). 单下划线_ ,是受保护的 proected -----当前文件是可以用的,只是不能导出到别的文件用 22. 用双下划线(__)开头的实例变量或方法表示类内私有 private,----只能在这个类内部使用,别的类用不了。 23. 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块 24. main 在Python中, pydoc以及单元测试要求模块必须是可导入的. 你的代码应该在执行主程序前总是检查 if __name__ == ‘__main__‘ , 这样当模块被导入时主程序就不会被执行. 25.所有行限制最大的字符数是79 26.空序列的判断 27.不要用==去和布尔值比较 一、Python编码规范(PEP 8)/工程结构化 标签:应用 操作 hang 返回 错误 表示 对齐 其他 应用程序 原文地址:https://www.cnblogs.com/zhangjx2457/p/14026335.html
if (width == 0 and height == 0 and color == ‘red‘ and
emphasis == ‘strong‘):
str1= (‘zhang‘
‘jingxue‘)
str2 = (‘zhang\n‘
‘jingxue‘)
print(str1)
print(str2)
"""
zhangjingxue
zhang
jingxue
"""
str2 = ‘zhang‘ ‘jingxue‘
url = ‘http://192.168.30.124:50084/biz/project-task-50-byModule-54.html‘
def fun1(a,b):
return a,b #正确
def fun2(c,d):
return (c,d) #错误
def test_zjx(var1,var2,var3,var4,
var5,var6,var7):
pass
foo = long_function_name(
var_one, var_two, var_three,
var_four)
顶级定义:
def test1():
pass
def test2():
pass方法定义:
class A:
def test1(self):
pass
def test2(self):
passdef test(name = None, age = None): # 错误
pass
def test(name=None, age=None): #正确
pass
def test(x,y): # 错误
pass
def test(x, y): # 正确
pass
def test(x, y):
sum = x + y #求和
chengji = x * y #求积
# We use a weighted dictionary search to find out where i is in
# the array. We extrapolate position based on the largest num
# in the array and the array size and then do binary search to
# get the exact number.
if i & (i-1) == 0: # true iff i is a power of 2
class OuterClass(object):
class InnerClass(object):
pass
正确:
items = [‘
‘]
for last_name, first_name in employee_list:
items.append(‘
‘)
employee_table = ‘‘.join(items)
错误:
employee_table = ‘ ‘ % (last_name,first_name))
items.append(‘
%s, %s
‘
for last_name, first_name in employee_list:
employee_table += ‘
‘ ‘ % (last_name,first_name)
employee_table += ‘
%s, %s import contextlib
with contextlib.closing(urllib.urlopen("http://www.python.org/")) as front_page:
for line in front_page:
print line
# TODO(Wuji) Change this to use relations.
def fun():
#TODO 后期实现的功能
pass
#不推荐:
import sys, os
#但是可以这样:
from subprocess import Popen, PIPE
def fun(x,y):
if x > 0: y = x + y
return y
即使是一个打算被用作脚本的文件, 也应该是可导入的. 并且简单的导入不应该导致这个脚本的主功能(main functionality)被执行, 这是一种副作用. 主功能应该放在一个main()函数中 def main():
...
if __name__ == ‘__main__‘:
main()
#正确:
if not seq:
if seq:
#错误
if len(seq):
if not len(seq):
正确: if greeting:
糟糕: if greeting == True:
更糟: if greeting is True:
上一篇:抽奖权重算法
文章标题:一、Python编码规范(PEP 8)/工程结构化
文章链接:http://soscw.com/index.php/essay/64356.html