PEP8编码规范,及开发中的一些惯例和建议
2018-08-26 17:30:21来源:博客园 阅读 ()
为什么要有编码规范
规范的代码给人的第一感觉是【美观】,美的东西总是更加的吸引人,也愿意观看。不规范的代码风格总是令人感到难受,检查会很困难。所以美观带来的是代码的【可读性】强,想一想你写的代码可读性非常高,是不是检查起来容易,维护起来也更加容易,所以可读性强带来的是代码的【可维护性】强。最终你的代码【健壮性】高,不容易出BUG,即使出了也较容易解决。代码绝不是只要运行成功就可以了,从长远看,一定是易于维护的代码,才是对整个项目是最有利的代码。编写规范的代码是程序员必须养成的习惯。
错误的代码编写示例
from django.conf import settings from user.models import * import sys, os mod=0xffffffff def foo ( a , b = 123 ): c={ 'x' : 111 , 'y' : 222 }#定义一个字典 d=[ 1 , 3,5 ] return a,b , c def bar(x): if x%2==0 : return True
正确的代码编写
1 ''' 2 PEP8 3 ''' 4 5 import os 6 import sys 7 8 from django.conf import settings 9 from django.core import xxx 10 11 from user.models import User 12 from user.models import Perm 13 14 XYZ_MOD = 0xffffffff 15 16 17 def foo(a, b=123): 18 '''this is foo''' 19 c = {'x': 111, 'y': 222} 20 d = [1, 3, 5] 21 return a, b, c 22 23 24 def bar(x): 25 '''this is bar''' 26 if x % 2 == 0: 27 box = {k * 3: v * 10 for k, v in zip(range(10), range(3, 50)) if k % 2 == 0} # as;df;asdfj 28 return True 29 30 31 class ThisIsBox: 32 '''this class A''' 33 def foo(self): 34 pass 35 36 class Meta: 37 pass
- 代码编排
- 缩进4个空格,禁止空格与Tab混用
- 行长80字符,防止单行逻辑过于复杂import
- 不要使用 from xxx import * 这种语法
- 文件 xyz.py
-
__all__ = ('a', 'e', '_d') # 包含在这里面的能被import到其他模块里面使用 a = 123 _b = 456 c = 'asdfghjkl' _d = [1,2,3,4,5,6] e = (9,8,7,6,5,4)
- 缩进4个空格,禁止空格与Tab混用
-
-
- 文件 abc.py
-
from xyz import * # 用这种语法导入的时候,除了__all__中的变量,带下划线的是导入不进来的。
print(a) print(_b) print(c) print(_d) print(e)
-
-
- 顺序
- 单行不要 import 多个库
- 第一层:标准库
- 第二层:第三方库
- 第三层:自定义库
- 模块内用不到的不要去 import
- 顺序
- 空格
- 问号和逗号后面跟一个空格,前面无空格。
- 二元操作符前后各一个空格,包括以下几类:
- 数学运算符 + - * / // = & |
- 比较运算符 == != > < >= <= is not in
- 逻辑运算符 and or not
- 位运算符 & | ^ << >>
- 当=用于只是关键字参数或默认参数值时,不要在其两侧使用空格
- 适当添加空行
- 函数间:顶级函数间空2行,类的方法之间空1行
- 函数内:同一函数内逻辑块之间,空一行
- 文件结尾:留一个空行
- 注释
- 两点需要避免:①逐行添加注释②没有一个注释
- 行尾注释:单行逻辑过于复杂时添加
- 块注释:一段逻辑开始时添加
- 引入外来算法或者配置时须在注释中添加源连接,标明出处
- 函数、类、模块尽可能添加docstring
- 命名
- 好的变量名 要能做到"词能达意"
- 除非在lambda函数中,否则不要使用单字母的变量名(即使是lambda函数中的变量名也要尽可能的有意义)
- 包名、模块名、函数名、方法、普通变量名全部使用小写, 单词间用下划线连接
- 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加
Error
或Wraning
后缀 - 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
- 函数名必须有动词, 最好是 do_something 的句式, 或者 somebody_do_something 句式
- 语意明确、直白
- not xx in yy VS xx not in yy
- not a is b VS a is not b
- 程序的构建
- 函数是模块化思想的体现
- 独立的逻辑应该抽离成独立函数,让代码结构更清晰,可复用度更高
- 一个函数只做一件事情, 并把这件事做好
- 大的功能用小函数之间灵活组合来完成
- 避免编写庞大的程序,
- 自定义的变量名、函数名不要与标准库中的名字冲突
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Win10下安装python3.x+pycharm+autopep8 2019-07-24
- python学习教程,如何解决Python中文编码乱码问题? 2019-07-24
- python的基本语法 2019-07-24
- 字符串与编码 2019-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash