阅读源码的乐趣
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) 编辑 收藏 举报