每个定义的函数包含的代码大多不超过20行;含有很多空行;对于交互型代码(例如Requests和Flask等),都有大量的doctoring或者comment,综合下来五分之一的代码内容是可以作为文档使用的。不过像HowDoI这种直接的不是用语交互的代码,并没有必要去包含大量的comment。
下面,我们就跟着学习下如何读不同风格的代码。
HowDoI,code代码总数只有300行左右,可以作为阅读代码的首选。
scirpt通常有一个清晰的starting point和一个清晰的ending point,以及其他定义清晰的操作。这使得sciprt会比一般的提供API的库 更容易follow。 关于howdoi,可以Google下,然后从github下载到。
安装: pip install --editable .
unit test: python test_howdoi.py
HowDoI的文档是README.rst文件,从中可以看出 HowDoI是一个很小的命令行应用,它可以允许使用者从互联网上获取关于编程问题的答案。
In [2]:
!which howdoi
In [3]:
!howdoi --help #注意我这里是在jupyter notebook里面直接使用的,所以需要加感叹号。如果是在terminal上,不需要加叹号。
通过帮助文档,我们可以了解到HowDoI大概的工作模式以及它的一些功能,例如可以colorize the output,get multiple answers, keep answers in a cache that can be clared等。
In [5]:
!howdoi --num-answers 3 python lambda function list comprehension
In [ ]:
In [7]:
!howdoi --num-answer 3 python numpy array create
在howdoi的目录中,除了pycache之外其实只有两个文件,即init.py 和 howdoi.py。 前者只有一行,包含了版本信息;而后者则是我们即将精读的代码。
In [3]:
!ls /Users/ywfang/FANG/git/howdoi_ywfang/howdoi
通过浏览howdoi.py,我们发现这里面定义了很多新的函数,而且每个函数都会在之后的函数中被引用,这是的我们可以方便follow。 其中的main function,即 command_line_runner()接近于 howdoi.py的底部
In [8]:
!sed -n '70,120p' /Users/ywfang/FANG/git/howdoi_ywfang/howdoi/howdoi.py
In [ ]: