目前用过的python ide有spyder, pycharm以及近年出的仿R studio的Rodeo,还是感觉jupyter notebook用的最得心应手。特别是在数据分析、机器学习等python编程的主力领域,我们的研究过程常常是探索性的,导入数据,查看数据的统计特征,试试这个模型,试试那个处理方法等,在这种情况下,notebook确实可以为我们提供一个高级“草稿本”,有了它,我们可以展示我们的探索过程,也可以在事后删去那些不相关的部分。应该说,jupyter notebook的流行是和特定领域的工作方式分不开的。比如,在python的网络开发领域,更流行的应该是pycharm,因为大家的工作并不一样。
jupyter notebook的另外一个妙用是:提供了一种新的代码复用的方式。编程领域常见的代码复用方式编写一个新的外部库,然后提交到pypi或github,然后大家需要pip安装,整个流程还是比较复杂的。这种方式对于那些大型的库是很好的,但对于一些处理小问题的小脚本就有点大材小用了。比如,我只是想写一个绘制函数图像的脚本,其中预设一些绘图的格式,我就是只需要将相关功能实现在一个Notebook中,像这样:使用matplotlib绘制函数图像,当你把notebook下载起来,安装必要的库,然后就可以直接在notebook是使用相应的功能了。在notebook常用的领域中,像科学计算、数据分析与机器学习,这种代码复用的方式是非常方便的。
至于notebook可能造成的滥用问题,我觉得这个可以通过使用者的代码规范来加以解决,适当设计整个book的结构,比如第一行写上这个Notebook的作者,联系方式,主要用途等信息,第二行导入所有必要的库,然后之下的每一行都是一个单独的功能模块,这样整个代码的结构就会清晰很多。这个方面,一些kaggle上面优秀的notebook很值得学习。
最后,打个广告,我的博客上偶尔会分享一些我日常用到的,有一定复用价值的notebook,欢迎大家来访。