DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

使用Jupyter Notebook编程与python脚本编程的差异

2022/04/10 22:40:35
2,408 阅读
Jupyter编程编程工具

近年来,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中的特殊编码做法造成的。

论文地址:https://arxiv.org/abs/2203.16718

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 当前业界最优秀的8个编程大模型简介:从最早的DeepMind的AlphaCode到最新的StarCoder全解析~
  • 常用的SQL语句总结
  • 为什么GitHub要求文件的末尾必须有换行符?
  • PandasTutor——一个用于可视化pandas操作的神器
  • pandas的get_dummies方法在机器学习中的应用及其陷阱
  • Python包中__init__.py文件的作用和用法
  • C/C++源代码是如何被最终执行的?
  • 编程语言(Programming Language)、汇编语言(Assembly Language, ASM)、机器语言(Machine Language/Code)的区别和简介

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署