Guan 发布的文章

抽象基类(ABC)


前言

我对抽象基类(Abstract Base Class,ABC)的理解在两个点上。第一点是抽象,即高度抽象;第二点是基类,对抽象基类来说,它的存在只是为了作为基类(区别于具体类),不可以被实例化

高度抽象一词听起来本身就很“抽象”,不妨让我用“总结”这个词进行通俗解释。比方这里有两类人,一类只是聋人,另一类只是盲人。现在我们需要对这两类人抽象,也就是需要总结两类人的相同点+不同点,然后付诸于代码。为方便起见,这里就列举三个行为:散步为相同点,看得见与看不见为不同点,听得见与听不见为不同点——这样一个过程,就是在“抽象”。(好吧,这般解释可能还是抽象)


时间的灰烬


【1】

十四五岁应该是我精力最旺盛的时候。

那时候能在冬日里的五点半起床,早饭自己做,然后去女友家楼下等她一起上学。走在路上,她问我喜欢她什么。有许多可以陈述的地方,最终被我以“因为你好看呀”笼统概括。女友似乎有些失望,悄无声息的终止这个话题。

后来很长一段时间里,我想不明白当时的回答怎么那么肤浅,听到的人大概率以为我是一个见色起意的人吧——虽然这样说也没错啦,不然我干么喜欢《搜神记》里陈紫函,喜欢《笑傲江湖》里陈乔恩,喜欢《一起同过窗》里徐晓璐……


Python传参陷阱


前言

简单的传参背后却藏匿着粗心就会完蛋的大坑。

默认传参

设计一个Python函数时,免不了用到默认传参;默认传参时,又免不了用到列表类型。如下面这样:

def add_elem_to_list(something, list_=[]):
    for i in something:
        list_.append(i)


动态规划-用编辑距离解释


前言

什么是编辑距离呢?

我们把“从字符串A到字符串B”的最少操作次数称作编辑距离。操作包含了:插入,删除,替换。比如字符串A = “abc”,字符串B = “abcd”,那么从A到B只需要增加一个字母“d”,所以编辑距离为1;同样的,从B到A只需要删除“d”,所以编辑距离也为1。

状态转移

将需要求解的问题,转移成子问题的过程,叫做状态转移。刻画状态转移的表达式称为状态转移方程式


两个不经意间的报错


前言

“你应该常回头看看,才不至于迷失。”——这是我近些日子工作中总结出的句子。

我在Python中总爱追求那些高大上的东西,什么元编程,什么异步,什么描述符……其实自己连最基本的语法也遗忘了。

说来惭愧!若不是组内测试人员的“胡搅蛮缠”,我可能会永远困顿在自己的骄傲自满里。好在终究在别人的敲击下清醒过来。下面有两个极小问题引发的报错,书此以谨记之!