版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019-2020年度榆树市土桥镇中学七年级数学上册1.1生活中的图形课后练习试卷
- 高中英语学习方法:口语
- 广州市南沙区2027届四上数学期末预测试题含解析
- 安装工程估价期末复习题
- 房地产销售主管述职报告
- 便利店夜间突发险情自保措施
- 2026年供应室消毒试题及答案
- 综合管廊防水施工工艺及施工方法
- 2026危险品押运员模拟考试试题及答案
- 科研课题进展与突破年度总结
- 冬季建设工程赶工技术方案
- 初中物理新课程标准解读
- 政法维稳工作课件
- 基层网格员安全监管培训课件
- 卡西欧手表OCW-T400(5054)说明书
- 蔬菜大棚现场管理制度
- 啤酒市场营销策略考核试卷
- DB32T 761-2022生活饮用水管道分质直饮水卫生规范
- 钻探安全技术操作规程(2020新版)
- 《SSD固态硬盘介绍》课件
- 《事业单位财务规则》专题培训
评论
0/150
提交评论