Python code standard

这又是一篇转载文章, 好文章! 

先给一个google推荐的规范

http://google-styleguide.googlecode.com/svn/trunk/pyguide.html

接着是Style Guide for Python Code

http://www.python.org/dev/peps/pep-0008/

啄木鸟上有中文翻译. 

http://wiki.woodpecker.org.cn/moin/PythonCodingRule

最后是正文,  转载自http://blog.youkuaiyun.com/akara/archive/2010/08/09/5797974.aspx

[注,  用中划线标注的观点, 是我不太认同的]

[原创]Python编程规范by AKara 2010-08-07 @ http://blog.youkuaiyun.com/akara @ akaras@163.com---------------------------------------------------------------------  Python编程规范(for Python2.5 by AKara)---------------------------------------------------------------------  源文件布局规范---------------------------------------------------------------------  * 文件以utf-8编码保存。  * 文件第一行svn prop:# $Id$  * 文件第二行coding约定:# -*- coding: utf-8 -*-  * 选择4个空格进行缩进。  * 任一行代码长度不超过70列。  * 用 # 来注释。  * 非必要不写docstring。  * 中文注释。避免英文注释。---------------------------------------------------------------------    命名规范  ---------------------------------------------------------------------  * 变量:unix风格,小写加下划线,如:foo_bar。  * 常量:大写加下划线,如:ERROR_FOO_BAR。  * 函数:和 变量 一致,如:def foo_bar(): pass  * 类:大写C开头的驼峰法,如:CFooBar。(是的,与python lib风格不同)  * 模块:小写无下划线,如:foobar.py。  * 包:与 模块 一致。    * "私有化"命名约定:    一个且只一个下划线开始的命名。    表示本命名不能超过最近命名空间索引。    (不使用python的Private name mangling风格)---------------------------------------------------------------------  比较规范---------------------------------------------------------------------    * None:a is None   * int / str:a == 163 / a == "AKara"  * boolean:if a: / if not a:  * 杜绝比较不同类型的对象。      PS:虽然builtin的某些不同对象间是可按如下规则比较的:    (1)None最小     (2)Number次之    (3)其他类型比较类型字符串,如:"dict" < "list"    即:None < Number(int/float) < dict < list < str < tuple    但Python后续版本并不保证维持这个规则。---------------------------------------------------------------------  import规范---------------------------------------------------------------------   * 所有import放在module最顶部。  *  每次import只导入一个module ,如:    import akara    import evil  * 杜绝一次import多个module:import akara, evil  * 杜绝import * from a。  * 杜绝from a import b。  * 杜绝import a as b。  * 性质决定import先后:builtin > standard > engine > frozen > py。  ---------------------------------------------------------------------  module规范---------------------------------------------------------------------  * module分两种性质:(1)数据module (2)实现module  * 数据module:只包含数据定义和初始化。  * 实现module:只包含函数或类定义。    不包含任何import时便执行的赋值或初始化(比如name = CAkara())  * __load__():执行module命名空间内的对象初始化的函数。  * __destroy__(): 执行module命名空间内的对象销毁的函数。  * 跨模块索引数据对象须考虑热更新。过早优化不必要,常用a.b.var索引。---------------------------------------------------------------------  class规范---------------------------------------------------------------------  * class必须直接或间接继承全局的gobject(非python内建的object)。    杜绝不继承任何基类的类定义:如 class CFoo: pass。  * 杜绝重载类的__del__方法来进行对象析构资源回收。    添加类的destroy方法统一销毁资源,并自行负责调用。  * 避免多继承。  * 总是让super来负责mro(Method resolution order)。---------------------------------------------------------------------  其他建议---------------------------------------------------------------------  * 安全性编码:tuple > list,frozenset > set,__debug__,assert。  * 迭代时优先考虑iter版本的内建函数或方法,如:    xrange / enumerate / zip / iterkeys / itervalues / iteritems ...  * 适当使用:list comprehension / generator / generator expression    decorator / __slots__ ...  * 少用properties。  * 用iter模式迭代大文件的读入。  * 考虑向下取整结果的整除操作符://。   * 大量字符串链接请用 "".join(str_list) 。    * 精准捕捉异常。避免不指定Exception或指定Exception基类的except捕捉。  * 如果需常用popleft语义,用collections.deque代替list。  * 性能分析模块:hostshot > cProfile > profile。  * 善用weakref模块管理引用。  * -OO release。---------------------------------------------------------------------  充分理解---------------------------------------------------------------------  * 充分理解import a的path查找和介质载入处理过程。  * 充分理解python中的命名空间和对象的关系。  * 充分理解并合理利用closure。  * 充分理解shallow copy & deep copy。  * 充分理解gc。  * import this。---------------------------------------------------------------------  更多参考资料---------------------------------------------------------------------  <<Style Guide for C Code>> http://www.python.org/dev/peps/pep-0007/  <<Style Guide for Python Code>> http://www.python.org/dev/peps/pep-0008/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值