3、
>>> 1 | 2 3 >>> 1 & 2 04、私有变量应该使用前导下划线, 如: _message
5、如果该变量是在方法内部使用, 用来提供一个公共特性, 并且只扮演这个角色, 那么最好是将其声明为私有变量
6、只支持一个属性的特性是好的私有成员
7、特殊方法是以两个下划线开始和结束的, 常规方法不应该使用这种命名约定。 它们被用于操作符重载、 容器定义等。为了使程序易读, 它们应该被集中放在类定义的最前面。 对于常规的方法, 绝不应该使用这种名称。
8、属性名称是用小写或者小写加上下划线命名的。 大部分时候, 它们表示对象的状态, 可以是一个名词或一个形容词, 在需要的时候也可以是一个小短语。
9、 类的名称总是使用驼峰命名法(CamelCase), 当定义的是模块的私有类时, 还可能有一个前导下划线。
10、类和实例变量常常是名词短语, 其使用逻辑与用动词短语命名方法一致。
11、除了特殊模块__init__之外, 模块名称都使用不带下划线的小写字母命名。 如: os、 sys、 shutil
12、当模块对于包而言是私有的时候, 将添加一个前导下划线。
13、当一个元素是用来保存布尔值时, “is”和“has”前缀提供一个自然的方式, 使其在命名空间中很容易被理解。 如: is_connected
14、当一个元素是用来保存一个序列时, 使用复数形式命名是个好主意。 如: connected_users = ['Tarek']
15、当一个变量时用来保存一个映射时, 应该尽可能使用显式的名称, 例如有一个用来保存个人地址的dict, 那么可以将其命名为 person_address
16、避免使用通用名称
17、 避免使用现有名称, 使用已经存在于上下文中的名称也是一个坏习惯, 因为它会使得在阅读程序时, 特别是调试时产生很多混论
18、对于关键字而言, 使用一个后缀下划线是避免冲突的一种方法, 如: or_
19、函数签名: 参数类型、 参数个数、 参数顺序 ps: http://bbs.csdn.net/topics/200079467
20、类的名称必须简明、精确, 并足以从中理解类所完成的工作。 常见的一个方法是表示其类型或特性的后缀, 例如: SQLEngine
21、对于基类而言, 可以使用一个Base或Abstract前缀, 如: BaseCookie
22、应尝试避免类及其特性名称之间的冗余, 如: SMTP.smtp_send() # 命名空间中存在冗余信息
23、如果它们实现一个协议, 那么通常会使用lib后缀, 如smtplib
24、一个函数或一个方法的内容不应该超过一个屏幕, 也就是大约25~30行, 否则它将很难跟踪和理解
25、类的方法的数量应该有一定的限制。 当方法超过10个时, 即使创建者对其也很难做出完整的描绘。 一个常见的方法是分离功能并且在该类之外创建多个类。
26、一个模块的大小也应该有一定的限制。 当它超过500行时, 就应该被分解为多个模块。
27、拥有的工具:
Pylint: 一个非常灵活的元代码分析器
CloneDigger: 一个重复代码侦测工具