收藏 分销(赏)

Python编码标准规范汇编.doc

上传人:精*** 文档编号:2977970 上传时间:2024-06-12 格式:DOC 页数:7 大小:68.04KB
下载 相关 举报
Python编码标准规范汇编.doc_第1页
第1页 / 共7页
Python编码标准规范汇编.doc_第2页
第2页 / 共7页
Python编码标准规范汇编.doc_第3页
第3页 / 共7页
Python编码标准规范汇编.doc_第4页
第4页 / 共7页
Python编码标准规范汇编.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、Python 编码规范遵循良好编码风格,可以有效提高代码可读性,减少出错几率和维护难度。在团队开发中,使用(尽量)统一编码风格,还可以减少沟通成本。网上有诸多版本编码规范,基本上都是遵循 PEP8 规范: PEP 0008 Style Guide for Python Code Google Python 风格指南 Python Guide - Code Style Pocoo Styleguide除了在编码时积极遵循规范,尚有诸多有用工具: IntelliJ IDEA 和 PyCharm 格式化代码功能 Google 开源 Python 文献格式化工具: pyflakes,pylint 等工

2、具及各种编辑器插件本文内容重要摘自互联网上各种版本规范,由于公司有些小伙伴代码风格不太好,因此整顿了一份算是团队编码规范。缩进 不要使用 tab 缩进 使用任何编辑器写 Python,请把一种 tab 展开为 4 个空格 绝对不要混用 tab 和空格,否则容易浮现IndentationError空格 在 list,dict,tuple,set,参数列表,背面加一种空格 在 dict :背面加一种空格 在注释符号#背面加一种空格,但是#!/usr/bin/python#后不能有空格 操作符两端加一种空格,如+,-,*,/,|,&,= 接上一条,在参数列表里=两端不需要空格 括号((),)内两端不

3、需要空格空行 function 和 class 顶上两个空行 class method 之间一种空行 函数内逻辑无关段落之间空一行,不要过度使用空行 不要把各种语句写在一行,然后用;隔开 if/for/while 语句中,虽然执行语句只有一句,也要另起一行换行 每一行代码控制在 80 字符以内 使用或()控制换行,举例: def foo(first,second,third,fourth,fifth, sixth,and_some_other_very_long_param): user = User.objects.filter_by(first=first,second=second,th

4、ird=third) .skip(100).limit(100) .all() text = (Long strings can be made up of several shorter strings.)命名 使用故意义,英文单词或词组,绝对不要使用汉语拼音 package/module 名中不要浮现- 各种类型命名规范:TypePublicInternalModuleslower_with_under_lower_with_underPackageslower_with_underClassesCapWords_CapWordsExceptionsCapWordsFunctionslow

5、er_with_under()_lower_with_under()Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDERGlobal/Class Variableslower_with_under_lower_with_underInstance Variableslower_with_under_lower_with_under(protected) or_lower_with_under(private)Method Nameslower_with_under()_lower_with_under()(protected) or_low

6、er_with_under()(private)Function/Method Parameterslower_with_underLocal Variableslower_with_underimport 所有 import 尽量放在文献开头,在 docstring 下面,其她变量定义上面 不要使用from foo imort * import 需要分组,每组之间一种空行,每个分组内顺序尽量采用字典序,分组顺序是:1. 原则库2. 第三方库3. 本项目 package 和 module 不要使用隐式相对导入(implicit relative imports),可是使用显示相对导入(expl

7、icit relative imports),如from .utils import validator,最佳使用全途径导入(absolute imports) 对于不同 package,一种 import 单独一行,同一种 package/module 下内容可以写一起: # bad import sys,os,time # good import os import sys import time # ok from flask import Flask,render_template,jsonify 为了避免也许浮现命名冲突,可以使用as或导入上一级命名空间 不要浮现循环导入(cycli

8、c import)注释 文档字符串docstring,是 package,module,class,method,function 级别注释,可以通过_doc_成员访问到,注释内容在一对符号之间 function,method 文档字符串应当描述其功能、输入参数、返回值,如果有复杂算法和实现,也需要写清晰 不要写错误注释,不要无谓注释 # bad 无谓注释 x = x + 1 # increase x by 1 # bad 错误注释 x = x - 1 # increase x by 1 优先使用英文写注释,英文不好所有写中文,否则更加看不懂异常 不要容易使用try/except except

9、背面需要指定捕获异常,裸露except会捕获所有异常,意味着会隐藏潜在问题 可以有各种except语句,捕获各种异常,分别做异常解决 使用finally子句来解决某些收尾操作 try/except里内容不要太多,只在也许抛出异常地方使用,如: # bad try: user = User() user.name = leon user.age = int(age) # 也许抛出异常 user.created_at = datetime.datetime.utcnow() db.session.add(user) mit() # 也许抛出异常 except: db.session.rollbac

10、k() # better try: age = int(age) except (TypeError,ValueError): return # 或别操作 user = User() user.name = leon user.age = age user.created_at = datetime.datetime.utcnow() db.session.add(user) try: mit() except sqlalchemy.exc.SQLAlchemyError:# 或者更详细异常 db.session.rollback() finally: db.session.close() 从

11、Exception而不是BaseException继承自定义异常类Class(类) 显示写明父类,如果不是继承自别类,就继承自object类 使用super调用父类办法 支持多继承,即同步有各种父类,建议使用 Mixin编码建议字符串 使用字符串join办法拼接字符串 使用字符串类型办法,而不是string模块办法 使用startswith和endswith办法比较前缀和后缀 使用format办法格式化字符串比较 空list,str,tuple,set,dict和0,0.0,None都是False 使用if some_list而不是if len(some_list)判断某个list与否为空,其

12、她类型同理 使用is和is not与单例(如None)进行比较,而不是用=和!= 使用if a is not None而不是if not a is None 用isinstance而不是type判断类型 不要用=和!=与True和False比较(除非有特殊状况,如在 sqlalchemy 中也许用到) 使用in操作:1. 用key in dict而不是dict.has_key()2. # bad3. if d.has_key(k):4. do_something()5.6. # good7. if k in d:8. do_something()9. 用set加速 “存在性” 检查,list查

13、找是线性,复杂度 O(n),set底层是 hash table,复杂度 O(1),但用set需要比list更多内存空间其她 使用列表表达式(list comprehension),字典表达式(dict comprehension,Python 2.7+) 和生成器(generator) dictget办法可以指定默认值,但有些时候应当用操作,使得可以抛出KeyError 使用for item in list迭代list,for index,item in enumerate(list)迭代list并获取下标 使用内建函数sorted和list.sort进行排序 适量使用map,reduce,f

14、ilter和lambda,使用内建all,any解决各种条件判断 使用defaultdict(Python 2.5+),Counter(Python 2.7+) 等 “冷门” 但好用原则库算法和数据构造 使用装饰器(decorator) 使用with语句解决上下文 有些时候不要对类型做太过严格限制,运用 Python 鸭子类型(Duck Type)特性 使用logging记录日记,配备好格式和级别 理解 Python Magic Method:A Guide to Pythons Magic Methods,Python 魔术办法指南 阅读先进开源代码,如Flask 框架,Requests for Humans 不要重复造轮子,查看原则库、PyPi、Github、Google 等使用既有先进解决方案

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服