美文网首页
编写高质量的代码 -- 代码风格

编写高质量的代码 -- 代码风格

作者: kevinjaw007 | 来源:发表于2019-06-25 22:21 被阅读0次

    编写高质量的代码

    代码风格

    PEP8

    PEP 20 - the Zen of Python

    一般性建议

    • 明确胜于隐晦
    • 留白胜于紧凑
    • 错误也不应被默默地忽略,除非你明确地忽视
    • 函数参数使用起来应该符合直觉
      • 位置参数
      • 关键字参数
      • 任意数量参数列表
      • 任意数量关键字参数字典
    • 如果实现很难解释,那就不是个好思路
    • 我们都是负责任的用户

      所有“内部”变量名称前面加“_”前缀

    • 尽量尽在一处返回函数结果

    约定

    • 检查相等性的替代方法

       #直接检查值
       if attr:
       print 'attr is truthy!'
      
    • 访问字典元素

       d = {'hello':'world'}
       
      print d.get ('hello', 'default_value')
       
      #或者
      if 'hello' in d:
         print (d['hello'])
      
    • 操作列表

      #过滤出大于4的元素
      a = [3, 4, 5]
      b = [i for i in a if i > 4]
      #或者
      b = filter (lambda x: x>4, a)
      
      #为所有元素加上3
      a = [3, 4, 5]
      b = [i + 3 for i in a]
      #或者
      a = map (lambda i: i+3, a)
      

      使用enumerate()来维护列表元素位置索引

      ```python
      a = ["icky", "ice", "ping", "pong", "box", "pad" ]
      for i, item in enumerate (a):
          print ("{i} : {item}".format (i = i, item = item))
      ```
    
    • 代码续行

      更好地方法是将代码元素包含在圆括号内。

    习语

    • 解包
      filename, ext = "my_photo.png".rsplit (".", 1)
      
      #用解包来交换变量值
      a, b = b, a
      
      #嵌套解包
      a, (b, c) = 1, (2, 3)
      
      #Python3中新的加强版解包方法
      a, *rest = [1, 2, 3]
      # a = 1, rest = [2, 3]
      
      a, *middle, c = [1, 2, 3, 4]
      # a = 1, middle = [2, 3], c = 4
      
    • 忽略一个值
      如果解包时需要赋值而又不需要其中某个值,可以使用双下划线"__"

      filename = 'foobar.txt'
      basename, __, ext = filename.rpartition ('.')
      
    • 创建一个包含N个相同对象的列表
    • 异常安全的上下文

    with语句和上下文管理协议来替代try/finally语句。
    该协议包含两个方法:enter()和exit(),如果一个对象实现了这两个方法,就能用在with语句中。

    常见陷阱

    • 可变的默认参数
    • 延迟绑定的闭包

    相关文章

      网友评论

          本文标题:编写高质量的代码 -- 代码风格

          本文链接:https://www.haomeiwen.com/subject/lpjfcctx.html