Fw: [翻译] Google 建议的 Python 风格指南 28,29

楼主: sandwichC ( )   2013-05-14 20:07:33
※ [本文转录自 Python 看板 #1HaYY8IM ]
作者: sandwichC (没回应=挂站) 看板: Python
标题: [翻译] Google 建议的 Python 风格指南 28,29
时间: Tue May 14 20:05:25 2013
原文网址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* 类别
若没有继承自其他类别,则一个类别应明确写出继承自 object 类别。即使是嵌入
类别 (nested class) 也应遵守。
Yes: class SampleClass(object):
pass
class OuterClass(object):
class InnerClass(object):
pass
class ChildClass(ParentClass):
"""Explicitly inherits from another class already."""
No: class SampleClass:
pass
class OuterClass:
class InnerClass:
pass
继承自 object 能确保 property 正常作用,并确保程式能与 Python 3000 (编案
:即 Python 3.0) 并容。某些能读取类别意义的方法也能继承自 object,包括:
__new__, __init__, __delattr__, __getattribute__, __setattr__, __hash__,
__repr__, and __str__。
* 字串
用 % 运算符号来格式化字串,即使参数全是字串也应如此。然而,你应聪明地判断
使用 + 与 % 的时机。
Yes: x = a + b
x = '%s, %s!' % (imperative, expletive)
x = 'name: %s; score: %d' % (name, n)
No: x = '%s%s' % (a, b) # use + in this case
x = imperative + ', ' + expletive + '!'
x = 'name: ' + name + '; score: ' + str(n)
在循环中避免使用 + 及 += 来组成字串,这是因为字串是不可变的物件,因此在操
作的过程中需要创造很多非必要的暂时物件,并导致二次方而非线性的执行时间。
你应该用把每个子字串当作 list 并把 list 加在一起,循环结束后再用 ''.join
来转换成完整的字串 (或者,把每个子字串写入 cStringIO.StringIO 暂存中)。
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>'
多行的字串用 """ 而非 '''。另外,使用隐性的多行连接会使程式更清楚,因为多
行的字串的缩排方式与其他地方常常不一致。
Yes:
print ("This is much nicer.\n"
"Do it this way.\n")
No:
print """This is pretty ugly.
Don't do this.
"""

Links booklink

Contact Us: admin [ a t ] ucptt.com