使用Jupyter Notebook编程与python脚本编程的差异
近年来,Jupyter笔记本在软件工程的多个领域越来越受欢迎,如数据科学、机器学习和计算机科学教育。它们的流行与它们丰富的数据展示和可视化功能有关,然而,最近的研究表明,笔记本也有很多缺点:大量的代码克隆,低重现性,等等。
Jupyter Notebook虽然在教学等领域有着非常大的优势,但是实际编程中,它的效率、可维护性等方面与python脚本相比的差距到底在哪也一直不那么清晰。就在上个月底,JetBrains的研究人员使用了大量的数据详细对比了二者的差异。这里总结一下其主要结论。
一、Jupyter Notebook的代码量更大
由于Jupyter Notebook平均包含比脚本更多的代码和更多的Markdown单元格形式的附加信息。而随着源文件大小的增加,出错的概率也在增加。这方面是Jupyter Notebook的缺点。
二、函数使用方面的差距
Notebook和脚本之间的函数使用模式明显不同。最明显的结果是用户定义的函数的使用情况不同:Notebook上的独特的用户定义的函数往往较少,但使用它们的频率更高。Notebook用户定义函数是出于特定的原因。这些结果表明,对于Notebook工具的开发者来说,库管理和导入分析可能是一个很有前途的方向。
三、复杂度指标的对比
如果我们把几个指标的结果结合起来,我们可以说,平均来说,Notebook中的函数更容易耦合,但它们的复杂性更低,接受的输入参数更少。我们可以把这解释为Notebook中的函数更简单但更纠结,功能和字段的分离程度更低。这意味着重构是Notebook中最难执行的任务之一。在这种情况下,致力于寻找重复或开发提取方法重构工具的工作在Notebook的背景下就显得更加重要。
四、易错性问题的对比
一些最受欢迎的代码质量问题实际上在Notebook的背景下并不是有效的问题。WPS428和WPS0104问题并没有突出不正确的代码行为,而是显示了Notebook的预期用法。然而,WPS440和WPS442仍然展示了不良的代码实践,并谈到了Jupyter笔记本中较低的代码质量。我们的结论是,笔记本需要特定的代码质量工具,而这些工具应该修改Python风格指南的某些部分,使其适用于笔记本
五、关于代码风格问题的对比
结果表明,Notebook显示了更多的代码风格问题,而这些问题可以通过使用简单的自动提示器来避免,这些提示器通常存在于现代IDE中。虽然有些功能在笔记本中是可用的,例如,从四个空格自动转换为一个制表符,但有很多功能需要在笔记本中加入,例如,将导入的内容移到笔记本的第一个单元格内。
六、最佳实践问题
在Notebook中,我们发现了比脚本中更多的最佳实践问题。在这部分分析中强调的大部分问题都来自于Notebook的使用方式,而不是媒介本身。纵观这些问题,我们可以说,在进一步发展面向Notebook的工具时,支持迭代开发的做法和创造有助于在多次迭代修改后清理代码的解决方案至关重要。
总结
在这项工作中,我们对用Jupyter笔记本和传统Python脚本编写的Python代码进行了比较。我们从两个角度来比较代码:结构和风格。在分析的第一部分,我们报告了行数的差异,函数的使用,以及各种复杂性指标。在第二部分,我们显示了文体问题数量的差异,并对所研究的媒介中最常见的15个文体问题进行了广泛的概述。总的来说,我们证明了Notebook的特点是代码复杂度较低,然而,它们的代码可能被认为比脚本更纠结。在风格方面,笔记本的风格问题要多出1.4倍,但同时,其中一些问题是由Notebook中的特殊编码做法造成的。
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
