先来看看效果图:怎么样,厉害吧~一起来完成这个可视化过程吧。1、安装graphviz工具生成图片的过程依赖于graphviz工具,我们先下载安装。下载地址http://www.graphviz.org/download/2。实战接下来,我们需要安装两个Python依赖库。pipinstallpycallgraph下面我们先写一个基本的代码;frompycallgraphimportPyCallGraphfrompycallgraph.outputimportGraphvizOutputclassBanana:defeat(self):passclassPerson:def__init__(self):self.no_bananas()defno_bananas(self):self.bananas=[]defadd_banana(self,香蕉):self.bananas.append(banana)defeat_bananas(self):[banana.eat()forbananainself.bananas]self.no_bananas()defmain():graphviz=GraphvizOutput()graphviz.output_file='basic.png'withPyCallGraph(output=graphviz):person=Person()forainrange(10):person.add_banana(Banana())person.eat_bananas()if__name__=='__main__':main()代码比较简单,定义了两个简单的类。主要pycallgraph的核心代码在main函数中。在with代码块下,执行一次我们定义的代码,运行上面的代码。basic.png图像文件将在当前目录中生成。从生成的图片中,可以非常清晰的看到整个代码的运行过程。从主代码块到各个类的初始化,可以说是一目了然。让我们举一个更复杂的例子:=graphviz,config=config):reo=compile()match(reo)defcompile():returnre.compile('^[abetors]*$')defmatch(reo):[reo.match(a)对于ainwords()]defwords():return['abbreviation','abbreviations','abettor','abettors','abilities','ability','abrasion','abrasions','abrasive','abrasives',]if__name__=='__main__':main()代码也是不负责任的,但是在编译器内部调用了重新正则化。我们来看一下最终生成的图片:可以看到整个代码过程复杂了很多,因为内部调用了很多常规的内部函数,但是整体还是很清晰的。可以说,这个神级第三方库绝对是众多Python爱好者的福音,尤其是刚刚接触Python领域的朋友们。对于一些不熟悉和复杂的代码块,不妨使用这个库来尝试一下可视化,看看能不能从中得到灵感~
