书写规范 PEP8

参考:https://blog.csdn.net/ratsniper/article/details/78954852#function-and-method-arguments-函数和方法参数

不要为了遵守PEP约定而破坏兼容性!

几个很好的理由去忽略特定的规则:

  1. 当遵循这份指南之后代码的可读性变差,甚至是遵循PEP规范的人也觉得可读性差。
  2. 与周围的代码保持一致(也可能出于历史原因),尽管这也是清理他人混乱(真正的Xtreme Programming风格)的一个机会。
  3. 有问题的代码出现在发现编码规范之前,而且也没有充足的理由去修改他们。
  4. 当代码需要兼容不支持编码规范建议的老版本Python。

Indentation 缩进

每一级缩进使用4个空格

# 与左括号对齐
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

在二元运算符之前换行

# 推荐:运算符和操作数很容易进行匹配
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

Imports 导入

推荐: import os
     import sys

不推荐:  import sys, os

导入总是位于文件的顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前。 
导入应该按照以下顺序分组:

  1. 标准库导入
  2. 相关第三方库导入
  3. 本地应用/库特定导入 
    你应该在每一组导入之间加入空行。

Comments 注释

如果一个注释是一个短语或句子,它的第一个单词应该大写,除非它是以小写字母开头的标识符(永远不要改变标识符的大小写!)。 

Block Comments 块注释

块注释的每一行开头使用一个#和一个空格(除非块注释内部缩进文本)。 

Inline Comments 行内注释

行内注释和代码至少要有两个空格分隔。注释由#和一个空格开始。

命名风格

以下是常见的命名方式:

  • b(单个小写字母)
  • B(单个大写字母)
  • lowercase 小写字母
  • lower_case_with_underscores 使用下划线分隔的小写字母
  • UPPERCASE 大写字母
  • UPPER_CASE_WITH_UNDERSCORES 使用下划线分隔的大写字母
  • CapitalizedWords(或者叫 CapWords,或者叫CamelCase 驼峰命名法 —— 这么命名是因为字母看上去有起伏的外观5)。有时候也被称为StudlyCaps。 
    注意:当在首字母大写的风格中用到缩写时,所有缩写的字母用大写,因此,HTTPServerError 比 HttpServerError 好。
  • mixedCase(不同于首字母大写,第一个单词的首字母小写)
  • Capitalized_Words_With_Underscores(巨丑无比!)

Class Names 类名

类名一般使用首字母大写的约定。 

Function Names 函数名

函数名应该小写,如果想提高可读性可以用下划线分隔。 
大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py),保持向后兼容性。

异常

如果你想捕获所有指示程序出错的异常,使用 except Exception: (只有except:等价于 except BaseException:)。

以下两种情况不应该只使用‘excpet’块:

  1. 如果异常处理的代码会打印或者记录log;至少让用户知道发生了一个错误。
  2. 如果代码需要做清理工作,使用 raise..try…finally 能很好处理这种情况并且能让异常继续上浮。

Programming Recommendations 编程建议

返回的语句保持一致。函数中的返回语句都应该返回一个表达式,或者都不返回。如果一个返回语句需要返回一个表达式,那么在没有值可以返回的情况下,需要用 return None 显式指明,并且在函数的最后显式指定一条返回语句(如果能跑到那的话)。 

推荐:

def foo(x):
    if x >= 0:
        return math.sqrt(x)
    else:
        return None

def bar(x):
    if x < 0:
        return None
    return math.sqrt(x)

不推荐:

def foo(x):
    if x >= 0:
        return math.sqrt(x)

def bar(x):
    if x < 0:
        return
    return math.sqrt(x)

不要用 == 去和True或者False比较:

正确: if greeting:
糟糕: if greeting == True:
更糟: if greeting is True:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值