版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python编码规范遵循良好的编码风格,可以有效的提高代码的可读性,降低出错几率和维护难度。在团队开发中,使用(尽量)统一的编码风格,还可以降低沟通成本。网上有很多版本的编码规范,基本上都是遵循PEP8的规范:PEP 0008 Style Guide for Python CodeGoogle的Python 风格指南Python Guide - Code StylePocoo Styleguide除了在编码时主动遵循规范,还有很多有用的工具:IntelliJ IDEA 和PyCharm 的格式化代码功能Google开源的Python 文件格式化工具:google/yapfpyflakes, p
2、ylint等工具及各种编辑器的插件本文的内容主要摘自互联网上各种版本的规范,因为公司有些小伙伴代码风格不太好,所以整理了 一份算是团队的编码规范。缩进不要使用tab缩进使用任何编辑器写Python ,请把一个tab展开为4个空格绝对不要混用tab和空格,否则容易出现IndentationError空格在list, dict, tuple, set,参数列表的 后面加一个空格在dict 的后面加一个空格在注释符号 #后面加一个空格,但是#!/usr/bin/python 的 # 后不能有空操作符两端加一个空格,如 +, u|*,|/,业 闻 目接上一条,在参数列表里的口两端不需要空格括号(国,回
3、,仙)内的两端不需要空格空行function 和class 顶上两个空行class 的method之间一个空行函数内逻辑无关的段落之间空一行,不要过度使用空行不要把多个语句写在一行,然后用 隔开if/for/while语句中,即使执行语句只有一句,也要另起一行换行每一行代码控制在 80字符以内使用口或自控制换行,举例:def foo (first, second, third, fourth, fifth, sixth, and_some_other_very_long_param).skip( 100).limit(100.all()text = ( Long strings can be
4、made up of several shorter strings. )命名使用有意义的,英文单词或词组,绝对不要使用汉语拼音package/module 名中不要出现 口各种类型的命名规范:TypePublicInternalModuleslower_with_under_lower_with_underPackageslower_with_underClassesCapWords|_CapWordsExceptionsCapWordsFunctionslower_with_under()_lower_with_under()Global/Class ConstantsCAPS WITH
5、UNDER CAPS WITH UNDERGlobal/Class Variableslower_with_under_lower_with_underInstance Variableslower_with_under_lower_with_under(protected) or_lower_with_under (privatMethod Names|lower_with_under()_lower_with_under()(protected) or_lower_with_under()(prFunction/Method Parameterslower_with_underLocal
6、Variables|lower_with_underPublicInternalTypeimport所有import 尽量放在文件开头,在 docstring 下面,其他变量定义的上面不要使用from foo imort *import需要分组,每组之间一个空行,每个分组内的顺序尽量采用字典序,分组顺序是:标准库第三方库本项目的package 和module不要使用隐式的相对导入(implicit relative imports ),可是使用显示的相对导入 (explicit relative imports), 如 from .utils import validator, 最好使用全路径
7、导入(absolute imports )对于不同的package , 一个import 单独一行,同一个 package/module 下的内容可以 写一起:为了避免可能出现的命名冲突,可以使用国 或导入上一级命名空间 不要出现循环导入(cyclic import)注释文档字符串docstring , 是 package, module, class, method, function级另用勺注释,可以通过|_doc成员访问到,注释内容在一对巴 符号之间function, method的文档字符串应当描述其功能、输入参数、返回值,如果有复杂的算法和实现,也需要写清楚不要写错误的注释,不要无谓
8、的注释# bad无谓的注释x = x +1# increase x by 1# bad错误的注释x = x -1# increase x by 1优先使用英文写注释,英文不好全部写中文,否则更加看不懂异常不要轻易使用 try/exceptexcept |后面需要指定捕捉的异常,裸露的 except会捕捉所有异常,意味着会隐藏潜在的问题可以有多个except |语句,捕捉多种异常,分别做异常处理使用 finally子句来处理一些收尾操作try/except |里的内容不要太多,只在可能抛出异常的地方使用,如:# badtry : user = User() = leon =int(age)#可能
9、抛出异常=#可能抛出异常except : bettertry :age = int(age)except (TypeError, ValueError): return #或别的操作user = User()=leon=age=#或者更具体的异常从 Exception而不是BaseException 继承自定义的异常类Class (类)显示的写明父类,如果不是继承自别的类,就继承自fjr类使用 ,uper|调用父类的方法支持多继承,即同时有多个父类,建议使用Mixin编码建议字符串使用字符串的恒 方法拼接字符用使用字符串类型的方法,而不是 string |模块的方法使用 startswith
10、和 endswith方法比较前缀和后缀使用 format 方法格式化字符串比较空的 |list |,|str |,tuple , |set |,|dict 和0, None 都是 False使用if some list|而不是 if len(some_list) 判断某个 list 是否为空,其他类型同理使用 固 和is not 与单例(如 None)进行比较,而不是用国和口使用 |if a is not None 而不是 if not a is None用isinstance 而不是|type |判断类型不要用 国和同 与 krue|和 False 比较(除非有特殊情况,如在 sqlal c
11、hemy中可能用到)使用口操作:用 key in dict 而不是 匠|# badif (k):do_something()# goodif k in d:do_something()用回 加速“存在性”检查,回 的查找是线性的,复杂度O(n),网 底层是hash table, 复杂度O(1),但用画需要比回更多内存空间其他使用列表表达式(list comprehension ), 字典表达式 (dict comprehension , Python +)和生成器(generator)叵 的 硬 方法可以指定默认值,但有些时候应该用 旧 操作,使得可以抛出 KeyError使用foEtem in list迭代 list , for index, item in enumerate(list)迭代 list II 并获取下标使用内建函数 sorted 和进行排序适量使用map reduce , filter 和 lambda,使用内建的 |all |,|any| 处理多个条件的判断使用 defaultdict (Python +), Counter (Python +) 等 “冷门” 但好用的标准库算法和数据结构使用装饰器(decorator)使用由语句处理上下文有些时候不要对类型做太过严格的限制,利用 Python 的鸭子类型(Duck Type)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胫后动脉狭窄护理查房方案
- 颈部淋巴结继发恶性肿瘤护理查房
- AI纺织质量检测设备生产项目可行性研究报告
- 金刺梨运营方案
- bpi精细化运营方案
- 海外游戏内容运营方案
- 城际包车运营方案
- 建设者之家运营管理方案
- 婚庆行业推广运营套餐方案
- 公交投币机运营方案
- 【MOOC】研究生英语科技论文写作-北京科技大学 中国大学慕课MOOC答案
- 中国共产主义青年团团章
- 管道施工安全知识培训
- 外贸销售岗位职责
- 电气控制与PLC技术(西门子S7-1200系列)(第2版)课件 项目二任务3 定时器指令的使用
- NB-T10292-2019铝合金电缆桥架
- 网络传播概论(第5版) 课件 第4-6章 网络传播形式之短视频传播、网络传播中的群体互动、网络传播与“议程设置”
- 普通天文学课件
- 妇科常见化疗药物及护理
- 特殊疾病儿童预防接种问题探讨
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
评论
0/150
提交评论