欢迎关注我的个人博客blog.timene.com
原文地址http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html,我挑一些自认为的重点翻译过来,总之,代码是写给人看的,不是写给机器执行的。
留白(一)
(1:每个缩进层级增加4个空格;
(2:不要使用Tab键(我就一直使用Tab键,很方便,这条有点不合理);
(3:不要混用空格和Tab键;
(4:函数之间一个空行;
(5:类之间两个空行;
留白(二)
(1:在dicts,lists,tuples,函数函数的“,”号之后,留一个空格;在dicts的“:”后面留一个空格;
(2:赋值和比较的两次各留一个空格;
(3:紧挨右括号或者紧挨左括号的两边不要留白,函数参数列表前不要留白;
(4:docstrings内不要留白
命名
(1:joined_lower,函数、方法、和属性使用;
(2:joined_lower 或者 ALL_CAPS,适合常量的定义(个人趋向于ALL_CAPS);
(3:StudlyCaps,类的命名;
(4:camelCase,一般不要使用,除非是延续旧代码习惯;
(5:属性 interface, _internal, __private,尽量避免使用__private,原因不翻译了,好长的,照做就OK了。
长句和连接
(1:保持一行在80个字符以内;
(2:(), [], {} 内有隐藏的跨行连接功能;
def __init__(self, first, second, third,
fourth, fifth, sixth):
output = (first + second + third
+ fourth + fifth + sixth)
(3:其他情况用"\"做连接用,注意,"\"必须是此行的最后一个字母,其后有任何字符连接的功能将失效。
VeryLong.left_hand_side \
= even_longer.right_hand_side()
长字符串
(1:紧邻的字符串将被解析器合并为一个字符串;
(2:r前缀的字符串不进行任何转义;
(3:字符串变量的连接需要用"+";
(4:跨行的字符串使用 """ """或者''' '''。
文档字符串和注释
文档字符串(docstring)用来说明函数的用途和用法(给使用者看)
(1:解释函数的功能;
(2:介绍参数,返回值和可能抛出的异常;
(3:最好说明调用方法;尤其当这个函数有一个很耦合的调用者
注释用来说明函数的实现方法,用来维护代码(给开发和维护代码人看)
(1:# !!! BUG: ...
(2:# !!! FIX: This is a hack
(3:# ??? Why is this here?