阅读源码的乐趣

1、【redis lock】

2、【redis queue】

3、【redis】

4、【requests】

5、【wtform】

6、【sqlalchemy】

 

7、【schedule】

  一个使用builder模式写出来的库。因为用法很秀我看了一下。

  用法大概是 self.every(10).second.do()

  1. 其实他也不是很多层嘛,关键就是每次做完一个函数,就return一个self咯(PS:是不是new一个出来更好呢?)

  2. 这里有一个特别的就是:

    他有一个父类,叫scheduler,里面有一些主要的方法,比如run_pending(), clear(),这个是一个全局的调度器,所以我们只需要 scheduler = Scheduler()这样的一个全局变量来用。

    然后scheduler.every(10)这个时候,返回的是一个job,因为后面操作的都是job的属性了嘛,然后job.second.do就是把这个函数(这个函数的参数要currying成一个可独立调用的函数),放去全局变量scheduler里面,让他run_pending

    怎么放呢?就是把Scheduler注入去job里面,然后job就可以用这个全局变量。

8、【cachetools】

9、【hyper】

10、【electronic-wechat】

   

 

编程方法:

1. OOP

  1. 特性:类、封装、继承、多态。

  2. 类被设计为:数据和行为绑定在一起的东西。

  3. 封装可以使得类成员有选择的暴露。比如private那些。

  4. 继承可以写一些common的方法,使得子类不需要实现。

  5. 多态:在派生类里面,任何情况都可以当成基类来使用,运行时多态可以逃避编译时的检查,使得一个函数更通用。

  6  以上的东西C语言也可以实现,虚函数表 + 函数指针。

 

2. 函数式编程

  记住:

    1. 永远都没有变量这个概念,x = x + 1是错误的,那怎么用循环呢,循环要变量啊,只能递归咯。

    2. 惰性求值,并不是每一个都先算好的。

    3. 比如一个class里面的point,moveby,并不是要你更改class里面的x和y,而是返回一个新的point(class)

posted on 2020-01-19 01:52  stupid_one  阅读(201)  评论(1编辑  收藏  举报

导航