上一章讲了,阅读代码是学习算法过程中非常重要的一环。本章我们就来讲讲阅读代码的方法,并一起来读一个源码的例子。
如何阅读代码
读一个函数/代码块
其实,前面我们对于如何阅读理解一个程序中的函数或是代码块,已经说了不少。可以用“人肉计算机”法——自己拟定一个测试数据,人肉运行一遍;还可以用打印法辅助——程序中加入打印语句,打印变量的中间结果。
这个方法对于所有程序都是通用的。不过如果程序稍大,涉及到的函数不止一个,且函数之间有了嵌套调用的关系,那么只靠模拟运行,就有点困难了。
基于代码结构理解代码功能
阅读代码,需要先构造出代码的结构,然后基于结构理解其功能。
具体的做法分三步:
从程序入口点开始,推导出其中函数的层层调用过程;
从最小粒度的函数(我们姑且认为函数体中调用其他自定义函数越少的函数粒度越小)开始,搞清楚每一个函数具体的功能和时空复杂度;
层层递进,逐步推导出全局的完整过程和整体时空复杂度。
边看边学编程语言
在阅读的过程中,可能会看到一些自己完全不明就里的程序语句:也许是之前没见过的关键字;也可能是该句中调用了某个之前不知道的 Python 内置函数或者从其他