Python代码风格规范.

@1:参数缩进:(2种形式)

<1>

foo = long_function_name(var1, var2,

                         var3, var4)

#第1行有参数, 第2行参数与第1行对齐

<2>

foo = long_function_name(

    var1, var2, var3, 

    var4)

#第1行须没有参数, 第2行前空4个空格, 第3行与第2行对齐

@2:顶级定义之间空2行, 方法定义之间空1

  类中第1个方法前总是应该空1行, 某些函数内部也可以适当的加空行

@3:不要在逗号, 分号, 冒号前面加空格, 但应该在他们后面加(除了在行尾)

@4:二元运算符两侧应该加空格, 但当”=”用于指示关键字参数或默认参数时不要加空格,如:

def complex(read, image=0.0):    # “=”两侧无空格

@5:总是使用最特化的版本,如/usr/bin/python2.4, 而不是/usr/bin/python2

@6:如果不是"简短,显然或函数不被外部可见", 任何函数都需要一个文档字符串.

@7:对于复杂的操作, 应该在其操作开始前写上若干行注释, 对于不是一目了然的代码, 应该在其行尾添加注释.

@8:如果一个类不继承自其它类, 就显式的从object类继承, 嵌套类也一样.

#NO------------------------------------
class SampleClass:
  pass class OuterClass:
  class InnerClass:
    pass #YES-----------------------------------
class SampleClass(object):
  pass class OuterClass(object):
  class InnerClass(object):
    pass class ChildClass(ParentClass):

@9: 尽量用format,而不是+. 但如果两个变量紧挨着,则使用+.

name = "lxw"
age = 24
x = "{0}, {1}!".format(name, age) #YES
#x = name + ", " + str(age) + "!" #NO
sex = "male"
#y = "{}{}".format(name, sex) #NO
y = name + sex #YES

@10:避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建不必要的临时对象, 并且导致二次方而不是线性的运行时间.

可以将每个子串加入列表, 然后在循环结束后用 .join 连接列表.

#Yes--------------------------
items = ['<table>']
for last_name, first_name in employee_list:
items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
items.append('</table>')
employee_table = ''.join(items)
#No--------------------------
employee_table = '<table>'
for last_name, first_name in employee_list:
employee_table += '<tr><td>%s, %s</td></tr>' % (last_name, first_name)
employee_table += '</table>'

@11:为多行字符串使用三重引号,而非三重单引号. 文档字符串必须使用三重双引号.

@12:推荐使用with语句以管理文件:

with open("hello.txt") as hello_file:
for line in hello_file:
print line

@13:每个导入应该独占一行

#Yes---------------------
import os
import sys
#No---------------------
import os, sys

@14:Python用下划线作为变量前缀和后缀指定特殊变量。

_xxx    不能用'from module import *'导入
__xxx__  系统定义名字
__xxx    类中的私有变量名

核心风格:避免用下划线作为变量名的开始。

"单下划线" 开始的成员是proctect成员,意思是只有类对象和子类对象能访问到这些变量;

"双下划线" 开始的成员是private成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

Reference:

Google 开源项目风格指南PYTHON风格规范: http://zh-google-styleguide.readthedocs.org/en/latest/google-python-styleguide/python_style_rules/

最新文章

  1. [html]LESS-1.3.3
  2. java web 学习 --第一天(Java三级考试)
  3. 【secureCRT】永久设置背景色和文字颜色
  4. 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –&gt; 12345,要求使用递归,并且函数体代码不超过8行
  5. 【英语】Bingo口语笔记(73) - 以tly,tely结尾的误读
  6. CF 19D 线段树+set压缩坐标轴+离散化map
  7. -_-#【jQuery插件】textSlider 文本滚动
  8. 使用strace查看C语言级别的php源码
  9. Spring 构造注入 传參数
  10. beamer中插入c代码,python代码的经验
  11. 直接删除undo及temp表空间文件后的数据库恢复一例
  12. angular学习第1步
  13. ThreadLocal与Synchronized区别
  14. Mathematica新特性Inactive, 求解复杂微分方程
  15. STL之List容器
  16. 因为强行关机, 而导致的fedora23 不能重新启动, 卡在开机logo那里的 修复 解决方案
  17. web api 本地测试
  18. python 正则表达式替换字符串中匹配的字符
  19. AE和Mocha结合做视频后期制作
  20. [Arc079F] Namori Grundy

热门文章

  1. 严重: Error in dependencyCheck java.io.IOException: invalid header field(tomcat启动成功可是訪问web项目404错误)
  2. Linux 5 下安装MySQL 5.6(RPM方式)
  3. IOS MagicRecord 详解 (转载)
  4. 用jquery替换dojo中的ajax
  5. Time Limit Exceeded 求逆序对数。
  6. GCD - Extreme (II) for(i=1;i&lt;N;i++) for(j=i+1;j&lt;=N;j++) { G+=gcd(i,j); } 推导分析+欧拉函数
  7. CentOS上使用Squid+Stunnel搭建代理服务器教程
  8. #进阶系列——WebApi 身份认证解决方案:Basic基础认证
  9. poj 2117(割点的应用)
  10. Assertion (software development) -- 断言