📚读书笔记:effective python

type
status
date
slug
summary
tags
category
icon
password
  1. 确认自己所用的Python版本
  1. 遵循PEP8风格指南
  1. 了解bytes、str与unicode的区别
      • Python3:bytes和str;
      • Python2:str和unicode;
  1. 用辅助函数来取代复杂的表达式
  1. 了解切割序列的办法
      • 以0开头或end结尾的切割,要省略;
  1. 在单次切片操作内,不要同时指定start、end和stride
      • 三者不要同时使用;尽量避免负数步长;如果同时需要:
        • 考虑首次切割范围;再次切割步长
        • 使用itertools模块中的islice
  1. 用列表推导式来取代map和filter
  1. 不要使用含有两个以上表达式的列表推导
  1. 使用生成器表达式来改写数据量较大的列表推导
  1. 尽量用enumerate取代range
  1. 用zip函数同时遍历两个迭代器
  1. 不要在for和while循环后面写else块
  1. 合理利用try/except/else/finnally结构中的每个代码块
  1. 尽量使用异常来表示特殊情况,而不要返回None
      • 抛出异常要写进开发文档中;
  1. 了解如何在闭包里使用外围作用域中的变量
  1. 考虑用生成器来改写直接返回列表的函数
  1. 在参数上面迭代时,要多加小心
  1. 用数量可变的位置参数减少视觉杂讯(*args)
      • 绝对不要给生成器使用*args;如果出现bug,难以排查
  1. 用关键字参数来表达可选的行为
  1. 用None和文档字符串来描述具有动态默认值的参数
  1. 用只能以关键字形式指定的参数来确保代码明晰
      • Python3有明确语法支持关键字形式指定的参数;
      • Python2的函数可以指定**kwargs参数,并手动抛出TypeError异常来模拟.
  1. 尽量用辅助类来维护程序的状态,而不要用字典和元组
  1. 简单的接口应该接受函数,而不是类的实例
  1. 以 @classmethod 形式的多态去通用的构建对象
  1. 用super初始化父类
  1. 只在使用Mix-in组件制作工具类时使用多重继承
  1. 多用public属性,少用private属性
  1. 继承collections.abc以实现自定义的容器类型
  1. 用纯属性取代get和set方法
      • 灵活使用 @property 来定义这种行为:遵循最小惊讶原则,需要快速执行
  1. 考虑用 @property 来代替属性重构
      • 如果 @property 使用的太过频繁,就应该考虑彻底重构这件事
  1. 用描述符来改写需要复用的 @property 方法
  1. 用__getattr__, __getattribute__和__setattr__实现按需生成的属性
      • __getattr__: 在访问不存在的属性是触发;
      • __getattribute__: 每次访问属性时触发;
  1. 使用元类来验证子类
  1. 使用元类来注册子类
  1. 使用元类来注解类的属性
  1. 使用 subprocess 模块来管理子进程
  1. 可以用线程来执行阻塞式 I/O, 但不要用它做平行计算
  1. 在线程中使用Lock来防止数据竞争
  1. 使用Queue来协调各线程之间的工作
  1. 考虑用协程来并发地运行多个函数
  1. 考虑用 concurrent.futures 来实现真正的平行计算
  1. 使用functools.wraps 定义函数修饰器
  1. 考虑以 contextlib 和 with 语句来改写可复用的 try/finally 代码
  1. 用copyreg 实现可靠的 pickle 操作
  1. 应该用datetime模块来处理本地时间,而不是用time模块
  1. 使用内置算法与数据结构
  1. 在重视精度的场合,应该使用decimal
  1. 学会安装由Python开发者社区构建的模块
  1. 为每个函数、类和模块编写文档字符串
  1. 用包来安装模块,并提供稳固的API
  1. 为自编的模块定义根异常,以便将调用者与API相隔离
  1. 用适当的方式打破循环依赖关系
  1. 用虚拟环境隔离项目,并重建其依赖关系
  1. 考虑用模块级别的代码来配置不同的部署环境
  1. 通过repr字符串来输出调试信息
  1. 用unittest来测试全部代码
  1. 考虑用pdb实现交互调试
  1. 先分析性能,然后再做优化
  1. 用tracemalloc来掌握内存的使用及泄漏情况
读书笔记:docker实践指南读书笔记:使用python管理系统
飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一