python代码规范

2019-07-21  本文已影响0人  jinminbox

从C#转到了python,重新梳理一下代码规范。

一、四行缩进

1、注意子代码块;
2、注意括号中的换行;

二、空白格

1、注意不要空格的情况
 - 二元运算符左右都有一个空格。
assignment (=), 
augmented assignment (+=, -= etc.), 
comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), 
Booleans (and, or, not)
 - 紧靠括号或括号内。
Yes: spam(ham[1], {eggs: 2})
No:  spam( ham[ 1 ], { eggs: 2 } )
 - 在尾随逗号和后面的右括号之间。
Yes: foo = (0,)
No:  bar = (0, )
 - 关于冒号的缩进规则
Yes:
    ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
    ham[lower:upper], ham[lower:upper:], ham[lower::step]
    ham[lower+offset : upper+offset]
    ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
    ham[lower + offset : upper + offset]
No:
    ham[lower + offset:upper + offset]
    ham[1: 9], ham[1 :9], ham[1:9 :3]
    ham[lower : : upper]
    ham[ : upper]
 - 函数注释应该使用冒号的常规规则,并且如果存在,则始终在- >箭头周围留出空格。
Yes:
    def munge(input: AnyStr): ...
    def munge() -> AnyStr: ...
No:
    def munge(input:AnyStr): ...
    def munge()->PosInt: ...
 - 当用于指示关键字参数时,或者用于指示未注释函数参数的默认值时,请勿在=符号周围使用空格。
Yes:
    def complex(real, imag=0.0):
        return magic(r=real, i=imag)
No:
    def complex(real, imag = 0.0):
        return magic(r = real, i = imag)
 - 但是,在将参数注释与默认值组合时,请在=符号周围使用空格。
Yes:
    def munge(sep: AnyStr = None): ...
    def munge(input: AnyStr, sep: AnyStr = None, limit=1000): ...
No:
    def munge(input: AnyStr=None): ...
    def munge(input: AnyStr, limit = 1000): ...

三、注释

保持注释始终处于最新状态。

1、块注释

  块注释通常适用于跟随它们的一些(或所有)代码,并缩进到与该代码相同的级别。块注释的每一行都以#和单个空格开头(除非它是注释中的缩进文本)。

  块注释中的段落由包含单个#的行分隔。

2、行注释

  谨慎使用行评论。

  行注释是与语句在同一行上的注释。行注释应与语句中至少两个空格分隔。它们应该以#和单个空格开头。

3、文档字符串

四、命名约定

1、包和模块名称

  模块应具有简短的全小写名称。如果提高可读性,则可以在模块名称中使用下划线。Python包也应该有简短的全小写名称,但不鼓励使用下划线。

  当用C或C ++编写的扩展模块具有提供更高级别(例如更多面向对象)的接口的Python模块时,C / C ++模块具有前导下划线(例如_socket)。

2、类名称

  类名通常应使用CapWords约定。

3、类型变量名称

  同上。

4、异常名称

  同上。

5、全局变量名称

  同上。

6、函数与变量名称

  函数名称应为小写,并根据需要用下划线分隔,以提高可读性。变量名称遵循与函数名称相同的约定。

  2只有在已经是主流风格(例如threading.py)的上下文中才允许使用mixedCase,以保持向后兼容性。

7、函数和方法参数

  始终使用self作为实例方法的第一个参数。

  始终使用cls作为类方法的第一个参数。

  如果函数参数的名称与保留关键字冲突,通常最好附加单个尾随下划线而不是使用缩写或拼写损坏。因此class_比clss好。(或许最好是通过使用同义词来避免这种冲突。)

8、常量

  常量通常在模块级别定义,并以全部大写字母书写,下划线分隔单词。示例包括 MAX_OVERFLOW和TOTAL。

上一篇下一篇

猜你喜欢

热点阅读