Python编码规范 -- Python Style Guide
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/
最新文章
- [html]LESS-1.3.3
- java web 学习 --第一天(Java三级考试)
- 【secureCRT】永久设置背景色和文字颜色
- 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –>; 12345,要求使用递归,并且函数体代码不超过8行
- 【英语】Bingo口语笔记(73) - 以tly,tely结尾的误读
- CF 19D 线段树+set压缩坐标轴+离散化map
- -_-#【jQuery插件】textSlider 文本滚动
- 使用strace查看C语言级别的php源码
- Spring 构造注入 传參数
- beamer中插入c代码,python代码的经验
- 直接删除undo及temp表空间文件后的数据库恢复一例
- angular学习第1步
- ThreadLocal与Synchronized区别
- Mathematica新特性Inactive, 求解复杂微分方程
- STL之List容器
- 因为强行关机, 而导致的fedora23 不能重新启动, 卡在开机logo那里的 修复 解决方案
- web api 本地测试
- python 正则表达式替换字符串中匹配的字符
- AE和Mocha结合做视频后期制作
- [Arc079F] Namori Grundy
热门文章
- 严重: Error in dependencyCheck java.io.IOException: invalid header field(tomcat启动成功可是訪问web项目404错误)
- Linux 5 下安装MySQL 5.6(RPM方式)
- IOS MagicRecord 详解 (转载)
- 用jquery替换dojo中的ajax
- Time Limit Exceeded 求逆序对数。
- GCD - Extreme (II) for(i=1;i<;N;i++) for(j=i+1;j<;=N;j++) { G+=gcd(i,j); } 推导分析+欧拉函数
- CentOS上使用Squid+Stunnel搭建代理服务器教程
- #进阶系列——WebApi 身份认证解决方案:Basic基础认证
- poj 2117(割点的应用)
- Assertion (software development) -- 断言