知识分享
清明假期的时候,有人从上海回来,成功的把我们小区搞封闭了。导致我在家不是安装电脑,就是在看水浒,或者就是稍微看了一点python知识。
其中最有价值的,或许是阅读了那个《python实现设计模式》的文章,学习了很多。
文章链接:
https://zhuanlan.zhihu.com/p/31700225
这篇推文就是和大家分享:我学完的感受和认识。
过程
作为小白
说实话,我之前不太会写class,我大概也是在学习python后的2~3年后,才渐渐的学会写class,之前看很多大佬的代码,写的非常漂亮,但是我就偏偏把一些大佬的代码写成简单的函数,就是为了看着明白🫡。
但是现在回过头看,真的好蠢,class那么优雅,改写成小函数干嘛😂,其实主要还是看不懂。
逐渐认识
后来自己工作以后,写的代码逻辑越来越复杂,变量也越来越多,各个函数之间相互依靠,导致我如果再写成很多小函数,可能就是给自己找麻烦,因此,尝试把一块代码改写成class,就是想打包起来📦。
打包起来之后,发现只要初始化这个类的开始,就可以把中间的所有过程都处理完。简单,方便,各个数据流、变量还不会污染。
提高自己
后来为了提高自己的编程逻辑,我也在坚持的看一些源码,发现了各种各样的 花式的代码写法。
比如有的把类的各个组建分开写的(这个可以看看陈天奇写的simcse。
还有做一些花式的继承的(我就是看了sentence transformer)。更加麻烦的还有nlp里面的transformer包,这个包里面对class用的更加巧妙,比如什么工厂模式等。
其实这有些东西我在前3个月,我可能都不太清楚。
得益于优秀的中文互联网环境,很多内容花心思找还找不到。就拿我之前看到的工厂模式来说,很多文章写的很不好。
再回退到之前我上大学的时候,看的一些python书,一些作者把 鸭子类型说的,好像是很复杂,现在回过头看看,也就是那样。
质变
在经过我看了不少的源代码之后,我无意间在知乎上看到了这个文章《python实现设计模式》。
其实第一遍、第二遍有的还没看懂,后来在昨晚上我静下心看了看,发现真的是把这个设计模式 讲解的透透的。
里面说的一些思想,其实自己之前都想过,并且也都用代码实现过,只不过自己没注意过;有的更是马上点拨了我,比如transformer的工厂模式:原来是这样:为不同的nlp模型设置相同的tokenize结构、相同的pretrained结构。
我今天下午又看了一遍ransformer的data部分,发现果然如此,代码结构逻辑不过如此。
果然,理论和实践相结合,就很容易把知识点掌握清楚。
发散
我在掌握了这个python设计模式之后,就想到c++也可以创建class,c++的class也可以和python做继承之类的。那么这个思想c++可以用,rust可以用,c也可以用(但是c好像不能创建对象)。我现在已经迫不及待的想用C++试一试了。🤪🤪🤪
总结
好处
那么说了半天,这个设计模式到底是什么呢?
说到底就是一个写代码形式,这个形式可以帮助你减少写代码的行数、健全你的代码逻辑。代码看起来就是结构清楚,有一种一气呵成的感觉。
就像是你写作文一样,作文结构清楚,看着肯定舒服。如果写的一团糟,看着肯定难受。
难点
那么如果现在还是看不懂《python设计模式》,应该怎么办?
其实我觉得没什么,看不懂就看不懂,就慢慢看,后面多看看代码,多去谷歌,肯定会有一天看懂的。看懂之后,发现也就那样。😛