Python编码规范02--基础规范--代码格式

1、 缩进

  用4个空格来缩进代码。

  绝对不要用tab, 也不要tab和空格混用.。对于行连接的情况, 你应该要么垂直对齐换行的元素, 或者使用4空格的悬挂式缩进(这时第一行不应该有参数):

Yes:   # 与起始变量对齐
       foo = long_function_name(var_one, var_two,
                                var_three, var_four)

       # 字典中与起始值对齐
       foo = {
           long_dictionary_key: value1 +
                                value2,
           ...
       }

       # 4 个空格缩进,第一行不需要
       foo = long_function_name(
           var_one, var_two, var_three,
           var_four)

       # 字典中 4 个空格缩进
       foo = {
           long_dictionary_key:
               long_dictionary_value,
           ...
       }
No:    # 第一行有空格是禁止的
      foo = long_function_name(var_one, var_two,
          var_three, var_four)

      # 2 个空格是禁止的
      foo = long_function_name(
        var_one, var_two, var_three,
        var_four)

      # 字典中没有处理缩进
      foo = {
          long_dictionary_key:
              long_dictionary_value,
              ...
      }

2、 分号

    不要在行尾加分号, 也不要用分号将两条命令放在同一行。

3、 行宽

  每行代码尽量不超过 80 个字符,以下情况除外:

  1)    长的导入模块语句

  2)    注释里的URL

4、 行连接

  1)    不要使用反斜杠连接行。

  2)    Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点。如果需要, 你可以在表达式外围增加一对额外的圆括号。

  推荐:

推荐: foo_bar(self, width, height, color='black', design=None, x='foo',
             emphasis=None, highlight=0)

     if (width == 0 and height == 0 and
         color == 'red' and emphasis == 'strong'):

  3)    如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:

x = ('这是一个非常长非常长非常长非常长 '
     '非常长非常长非常长非常长非常长非常长的字符串')

  4)    在注释中,如果必要,将长的URL放在一行上。

  5)    禁止复合语句,即一行中包含多个语句:

# 正确的写法
do_first()
do_second()
do_third()

# 不推荐的写法
do_first();do_second();do_third();

  6)    if/for/while一定要换行:

# 正确的写法
if foo == 'blah':
    do_blah_thing()

# 不推荐的写法
if foo == 'blah': do_blash_thing()

5、 括号

  宁缺毋滥的使用括号。

  除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的。

Yes: if foo:
         bar()
     while x:
         x = bar()
     if x and y:
         bar()
     if not x:
         bar()
     return foo
     for (x, y) in dict.items(): ...
No:  if (x):
         bar()
     if not(x):
         bar()
     return (foo)

6、  空行

  模块级函数和类定义之间空两行;

  类成员函数之间空一行;

  函数中可以使用空行分隔出逻辑相关的代码。

class A:

    def __init__(self):
        pass

    def hello(self):
        pass


def main():
    pass   
posted on 2020-03-17 19:35  麦克煎蛋  阅读(386)  评论(0编辑  收藏  举报