Overview

本文汇总了写Python代码的建议。

阅读建议

  • The Zen of Python
  • 《编写高质量代码:改善Python程序的91个建议》
  • 官方手册中的 Language ReferenceLibrary Reference
  • 深入阅读业界公认的比较Pythonic的代码项目:
    • Flask
    • gevent
    • requests

Code建议

  1. str.format进行字符串格式化,示例:
    • 关键字参数映射

        In [1]: 'Hello {name}'.foramt(name = 'Tom')
        Out[1]: 'Hello Tom'
      
    • 通过位置映射

        In [1]: '{0},{1}'.format('Tom',18)  
        Out[1]: 'Tom,18'  
        In [2]: '{1},{0},{1}'.format('Tom',18)  
        Out[2]: '18,Tom,18'
        In [3]: '{},{}'.format('Tom',18)  
        Out[3]: 'Tom,18'  
      
    • 通过对象属性映射

        # self.name == Tom, self.age == 18  
        In [1]: '{self.name},{self.age}'.format(self=self) 
      	Out[1]: 'Tom,18'
      
    • 通过下标映射

        # p=['Tom',18]  
        In [1]: '{0[0]},{0[1]}'.format(p)
        Out[1]: 'Tom,18'
      
    • 填充与对齐(格式限定)

        填充常跟对齐一起使用   
        ^、<、>分别是居中、左对齐、右对齐,后面带宽度  
        :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
      
        In [1]: '{:>8}'.format('123')
        Out[1]: '     123'
        In [2]: '{:0>8}'.format('123')
        Out[2]: '00000123'
      
    • 精度与类型(格式限定)

        精度常跟类型f一起使用  
        其他类型有b、d、o、x,分别是二进制、十进制、八进制、十六进制
      
        In [1]: '{:.2f}'.format(3.1415)
        Out[1]: '3.14'
        In [2]: '{:d}'.format(123)
        Out[2]: '123'
      
  2. 用in操作符判读某元素在某容器中

    不用如dict.has_key()形式

  3. 不要使用type进行类型检查,推荐用isinstance()
  4. 用==判断对象值是否相等(is判断是否是一个对象)
  5. 使用with自动关闭资源
  6. 不要在finally中使用breakreturn语句
  7. 深入理解None,正确判断对象是否为空
    • None是一个空值对象,遵循单例模式,所有赋值为None的对象都相等,None与其他非None对象比较均不等
    • 例,判断list为空的正确方式:

        if list1: 
            Do something 
        else:
            Do some other thing 
      
  8. 连接字符串应优先考虑join,而不是+


blog comments powered by Disqus

Published

04 October 2016

Tags