PEP代码规范简单总结

PEP代码规范

1 当一个判断条件太长以致于要换行的时候,可以使用()将他们括起来,更好的可读性。()会隐式的将他们连接起来

  • if 'a' == 'bba' and 'b' in ['bb','sds'] and isinstance('c',str) or a+b <= 10:
        print('sss')
    # 可以改写为以下代码
    if ('a' == 'bba' and 'b' in ['bb','sds'] and 
        isinstance('c',str) or a+b <= 10):
        print('sss')
    

2 注释不需要强行对齐,因为这会增加维护的难度

3 代码注释不需要描述代码,只需要说代码大概是干嘛的

4 如果一个类不继承其他类,就显式的从object继承

  • 继承自object是为了使属性(properties)正常工作,可以保护代码

5 对于字符串的累加,避免在循环中使用 ++= 进行字符串累加

  • 由于字符串是不可变的,这样做会创建不必要的临时对象,并且导致二次方而不是线性的运行时间。

  • 作为替代方案,可以将每个字符串加入列表,然后再循环结束后用join()连接列表,也可以将每个字符串写入一个cStringIO.StringIO缓存中

  • Yes

    • item = ['<table>']
      for last_name, first_name in employee_list:
      	items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
      item.append('</table>')
      employee_table = ''.join(items)
      
  • No

    • employee_table = '<table>'
      for last_name, first_name in employee_list:
          employee_table += '<tr><td>%s, %s</td></tr>' %(last_name, first_name)
      emplyee_table += '</table>'
      

6 文件和sockets

  • 1在文件和sockets结束时,显示的关闭它
  • 使用with语句以管理文件,会调用类中的__enter__()__exit__()方法。
    • 对于不支持使用with语句的类似文件的对象,使用contextlib.closing()语句

7 TODO注释

为了更好的记录临时代码,以及为了将来更好的找到哪些代码被标记了待处理,可以使用以下格式进行记录

可以添加邮箱、姓名、以及日期,为了更好的检索

# TODO(dujuntong33@163.com):这行代码有xx问题,还有什么xx问题没有处理 # TODO(dujuntong):xxxx #TODO(2021年4月解决)

8 导入格式

每个导入应该独占一行

Yes:
    import os
	import sys
No:
    import os,sys

导入应该按照从最通用到最不通用的顺序分组

  • 1 标准库导入
  • 2 第三方库导入
  • 3 应用程序指定导入

9 命名规范

TypePublicInternal
Moduleslower_with_under_lower_with_under
Packageslower_with_under
ClassedCapWords_CapWords
ExceptionsCapWords
Functionslower_with_under()_lower_with_under()
Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDER
Global/Class Variableslower_with_under_lower_with_under
Instance Variableslower_with_under_lower_with_under(protected) or __lower_with_under(private)
Method Nameslower_with_under()_lower_with_under()(protected) or __lower_with_under()(private)
Function/Method Parameterslower_with_under
Local Variableslower_with_under
  • 使用下划线(_)开头表示模块变量或函数是protected的(使用import * from 时不包含)
  • 双下划线(__)开头的实例变量或方法表示类内私有

10 Main

  • 代码应该在执行主程序前总是检查if __name__ == '__main__',这样当模块被导入时主程序就不会被执行

  • def main():
        ...
    
    if __name__ == '__main__':
        main()
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值