使用Jupyter Notebook编程与python脚本编程的差异
近年来,Jupyter笔记本在软件工程的多个领域越来越受欢迎,如数据科学、机器学习和计算机科学教育。它们的流行与它们丰富的数据展示和可视化功能有关,然而,最近的研究表明,笔记本也有很多缺点:大量的代码克隆,低重现性,等等。
Jupyter Notebook虽然在教学等领域有着非常大的优势,但是实际编程中,它的效率、可维护性等方面与python脚本相比的差距到底在哪也一直不那么清晰。就在上个月底,JetBrains的研究人员使用了大量的数据详细对比了二者的差异。这里总结一下其主要结论。
一、Jupyter Notebook的代码量更大
由于Jupyter Notebook平均包含比脚本更多的代码和更多的Markdown单元格形式的附加信息。而随着源文件大小的增加,出错的概率也在增加。这方面是Jupyter Notebook的缺点。
二、函数使用方面的差距
Notebook和脚本之间的函数使用模式明显不同。最明显的结果是用户定义的函数的使用情况不同:Notebook上的独特的用户定义的函数往往较少,但使用它们的频率更高。Notebook用户定义函数是出于特定的原因。这些结果表明,对于Notebook工具的开发者来说,库管理和导入分析可能是一个很有前途的方向。
三、复杂度指标的对比
如果我们把几个指标的结果结合起来,我们可以说,平均来说,Notebook中的函数更容易耦合,但它们的复杂性更低,接受的输入参数更少。我们可以把这解释为Notebook中的函数更简单但更纠结,功能和字段的分离程度更低。这意味着重构是Notebook中最难执行的任务之一。在这种情况下,致力于寻找重复或开发提取方法重构工具的工作在Notebook的背景下就显得更加重要。
