本编码规范是对知道创宇研发技能表中提供的PythonCodingRule.pdf文档进行凝练和总结出来的结果,感谢知道创宇的Geek精神与分享精神

此规范较为严格,严格规定了编码格式和命名规则,仅适于本人,对新手可能有跟多的参考意义

尊重原创,本文及演示代码转载需注明


1. 一致性的建议###

  • 打破一条既定规则的两个好理由
  1. 当应用这个规则将导致代码可读性下降,即使对于某人来说他已经习惯于按照这条规则来阅读代码了
  1. 为了和周围的代码保持一致而打破规则(也许是历史原因)

2. 代码的布局###

  1. 缩进
  • 4个空格
  1. 代码行
  • 行最大长度 : 79字符

  • 推荐长度 : 72字符

  • 分割方式 : "" , "()" , "{}"

  1. 空行
  • 两行空行分割顶层函数和类的定义

  • 一行空行分割方法或函数

  • 额外空行分割相关函数群

  • 类定义与第一个方法定义需要一行空行

  1. 编码
  • 万年 "UTF-8"
  1. 导入
  • 先import标准模块,再from ... import第三方模块(绝对路径) ,最后from ... import自建模块

  • 每组导入空一行,一行导入一个包[模块,类等]

  1. 空格
  • 紧贴各类括号

  • 紧贴逗号,分号,冒号前

  • 紧贴函数调用参数列表前开放式括号

  • 紧贴再索引或切片括号

  • 二元操作符或运算符或逻辑等两边各留一个空格

  • 默认参数或关键参数"="不留空格

3. 注释###

  1. 注释块
  • 与相应代码有着相同缩进
  1. 行内注释
  • 与代码被注释代码同行,以"#"+" "开头
  1. 文档注释
  • 结尾处 """ 单独成行
  1. 版本注记
  • 模块文档字符串之后,所有代码之前,上下空行分割

4. 命名###

  1. 约定
  • 模块名 : 不含下划线 ; 小写 ; 剪短

  • 类名,异常名 : 首字母大写单词串

  • 方法,函数 : 第一个字母小写的首字母大写单词串

  • 属性,实例,变量 : 小写字母串

  1. 继承
  • 私有 : 双下划线开头

  • 非公有 : 单下划线开头

  1. 命名冲突
  • 不降低可读性,能改就改,不能就在末尾加单个下划线或者数字

5. 设计建议###

  • 使用"is"或"is not"进行对"None"的单值比较

  • 使用字符串方法代替字符串模块

  • 使用startswith()和endswith()检查前后缀而不是使用切片

  • 使用isinstance()判断对象是否是字符串而不是使用type()

  • 判断空序列或字典不要使用len()

  • 书写字符串文字不要依赖有意义的后置空格

  • 不要用"=="比较布尔值

示例代码##


#!/usr/bin/Python # -*- coding: utf-8 -*- '''Pyhton Coding Rule 这是Python编码规范的示例代码,它将向你展示Python编程中一些代码的标准格式 帮助提升代码的可读性以及编程效率 ''' __version__ = "vision: 1.0" import sys import urllib from os import path from types import StringTypes from inexistence import * class BaseRules(): '''class BaseRules() 这是一个用于演示的类 ''' def __init__(self, input_=''): self.input = input_ self.__spacerule = 4 self.__maxwords = 79 self.__spliteways = ['\\', '()', '{}'] def getSpaceRule(self): print self.__spacerule def getMaxWords(self): print self.__maxwords def getSpliteWays(self): for spliteway in self.__spliteways: print spliteway class PythonRules(BaseRules): '''class PythonRules ''' def __init__(self, input_, output): BaseRules.__init__(input_) self.output = output if isinstance(self.output, StringTypes): if self.output: if self.output.startswith(' '): print 'Do not start with space !' if self.output.endswith(' '): print 'Do not end with space !' else: self.output = ['What', 'the', 'fuck', 'you', 'input', '?'] # 这里其实不太美观~\(≧▽≦)/~啦 for word in self.output: print word, if __name__ == '__main__': baserule = BaseRules() pythonrule = PythonRules('bibibabibo', 'I am erliang')

Pythonb编码规范的更多相关文章

  1. Android的编码规范

    一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...

  2. PHP 高级编程(1/5) - 编码规范及文档编写

    PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...

  3. 【原】JAVA SE编码规范

    /* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...

  4. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  5. PHP编码规范PSR-2

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  6. Objective-C开发编码规范【转载】

    概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...

  7. 前端编码规范之CSS

    "字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...

  8. 前端编码规范之JavaScript

    上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...

  9. Java Script 编码规范【转】

    Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...

随机推荐

  1. MapReduce-排序(全部排序、辅助排序)

    排序 排序是MapReduce的核心技术. 1.准备 示例:按照气温字段对天气数据集排序.由于气温字段是有符号的整数,所以不能将该字段视为Text对象并以字典顺序排序.反之,用顺序文件存储数据,其In ...

  2. MATLAB中feval与eval的区别

    feval函数有两种调用形式1.[y1, y2, ...] = feval(fhandle, x1, ..., xn)2.[y1, y2, ...] = feval(fname, x1, ..., x ...

  3. OpenStack网络新项目Dragonflow研究

    https://www.ustack.com/blog/openstack-dragonflow/ 本文由2015年5月30日举行的OpenStack Meetup北京上的演讲整理而成,演讲者为Uni ...

  4. Android在layout xml中使用ViewStub完成动态加载

    Android在layout xml中使用ViewStub完成动态加载 一.Layout XML文件常见的两种模块加载方式 1.静态加载:被加载的模块和其它模块加载的时间一样. <include ...

  5. MySQL复制:主从和双主配置

    对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景

  6. 结合两张表person和address

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  7. 特殊字符处理(WPF)

    WPF XAML 特殊字符(小于号.大于号.引号.&符号) - Andrew.Wangxu 时间 2013-09-07 18:14:00  博客园-所有随笔区原文  http://www.cn ...

  8. 使用memcache 心得和注意事项

    内存分配机制:首先要说明的是Memcached支持最大的存储对象为1M.它的内存分配比较特殊,但是这样的分配方式其实也是对于性能考虑的,简单的分配机制可以更容易回收再分配,节省对于CPU的使用.这里用 ...

  9. zoj3988 二分图匹配

    给一个数组,对于每两个数加起来为素数那么就是一个集合,求不超过k个集合的最多数是多少 解法:二分图匹配,先打素数筛,预处理边集,匹配完之后分两种情况k>匹配数,那么可以直接输出匹配数*2,否则可 ...

  10. cocos2d-js 创建帧动画

    封装创建方法 var RunActionHelper = function(){ };RunActionHelper.prototype.createAnimationByPlist = functi ...