简介
Visual Studio Code是最受欢迎的文本编辑器之一,有着持续改进的记录。最近,VSCode的一个创新领域是它对Jupyter Notebook的支持。VSCode的早期版本试图在VSCode中复制现有的Jupyter笔记本功能。最近的VSCode版本继续开发笔记本功能,在许多情况下提供了比传统Jupyter笔记本更好的体验。
我是一个使用Jupyter笔记本进行Python分析的忠实粉丝--尽管有一些限制。 对于我所做的那种临时分析,笔记本中的代码和可视化的组合比使用临时的Excel文件要好。尽管如此,有时我希望我的笔记本代码能有一个功能更全面的编辑器。
在这篇文章中,我将介绍16个理由,为什么你应该考虑使用VSCode作为你在Jupyter Notebooks中使用python时的首选编辑器。我没有按照任何特定的顺序,但认为第11条是我最喜欢的一条。
1 - 一个适用于多种语言的编辑器
你的工作流程很可能包括处理多种文件或语言类型。 如果你正在处理HTML、YAML、JSON、CSS或Javascript文件,那么拥有一个编辑器是非常有益的。
例如,VSCode是非常可定制的,所以你可以配置你的主题、颜色、字体等等,使你的开发环境属于你自己。如果你已经在用VSCode编辑文本文件,为什么不开始用它来开发笔记本呢?
2 - 支持多种python文件类型
如果你正在使用python工作,你有三种不同的编辑文件的选择。
- 独立的.py文件
- python代码单元
- Jupyter 笔记本 (
.ipynb
)
VSCode支持所有的编辑方式,因此你可以将流光溢彩的应用程序作为独立的文件来构建,或者在笔记本中建立工作原型--所有这些都来自同一个编辑器。
3 - 执行时间
一个简单但方便的好处是,在执行代码时,每个单元格都会显示一个移动的进度条,并显示它需要多少秒的执行时间。如果你有需要几秒钟或更长的时间来运行的过程,这个小功能是非常有用的,而且是开箱即用。
4 - 大纲模式
标准笔记本的一大挑战是,它们可能难以浏览。VSCode包括一个大纲模式,它使你可以很容易地用Markdown建立一个目录。
如果你定义了一个Markdown单元并使用Markdown格式的标题.你可以通过点击大纲面板上的链接跳到你的代码的某一节。
5 - Jupyter变量探索器
你是否忘记了你的变量名?你是否调用了客户变量 cust
或 customers
? 我花了很多时间在笔记本中滚动,试图记住名字。Jupyter变量资源管理器解决了这个问题,并显示了关于每个变量的大小和类型的额外有用信息。
6 - 数据查看器
变量探索器还允许你在一个单独的标签中查看数据框架或系列。我发现这对于记住列名或快速检查和过滤数据非常有用。如果没有查看器,我通常会将数据导出到Excel并进行检查。查看器消除了很多这种需要。
7 - 代码格式化
我非常喜欢使用一个一致的代码格式化器,比如yapf或者black来格式化一些比较复杂的pandas代码。VSCode会应用选择的格式化器来清理你的嵌套代码。一致的、可读的代码使调试过程更加容易。
8 - 单元格调试
如果你想调用一个丰富的调试环境,你可以用VSCode访问这个功能。调用它的一个最简单的方法是按F10键,在逐行模式下运行一个多行单元。
现在你可以进入调试环境来处理更复杂的问题了。
9 - 分割编辑器
有时你可能希望有多个窗口的代码是可见的。VSCode允许你分割和配置你的编辑器,你可以想象到很多配置。在标准的笔记本界面上,要做到这一点并不容易。
下面是一个例子,一个笔记本打开了多个窗格。
10 - Git集成
VSCode与git无缝集成。例如,你可以看到你的提交历史的时间线视图。
11 - 更好的差异
这可能是考虑使用VSCode的最大原因之一。你的笔记本差异更容易解读!对笔记本文件最大的抱怨之一是有很多额外的元数据和输出信息,这使得它很难正确看到差异。VSCode做了一些巧妙的工作,使差异对笔记本有用。
其中一个配置选项是隐藏元数据或输出中的差异,这样你就可以只关注代码的变化。
在我看来,这个差异功能对于使用笔记本和git的工作来说真的是改变了游戏规则。
12 - 智能提示
VSCode将尽力帮助你完成你的代码,并在编辑器中直接显示文档。如果你不记得参数是 sheet
还是 sheet_name
,那么Intellisense将帮助你避免许多不必要的谷歌搜索。
Intellisense还可以帮助你使用一些你不查就记不住的pandas函数。
13 - 变量偷看
变量偷看可以让你看到一个变量是如何定义的,而不需要滚动你的代码。在这个例子中,如果你不记得 sku_filter
,你可以选中 sku_filter
,然后按Alt+F12,就可以看到这个摘要叠加。
14 - 收集代码
除了差异之外,对笔记本环境最大的抱怨之一就是它太容易让你的执行顺序不同步了。如果你正在做一些特别的分析,并想重新创建一个特定的输出,你可以使用收集代码的功能来过滤笔记本中用于导出单元格中的输出的特定代码。
然后,该代码将显示在一个单独的笔记本中。
如果你的笔记本的执行顺序出了问题,这就非常有用。
12 - 片段(Snippets
软件开发和数据分析涉及到大量的重复性代码(即复制和粘贴)。VS代码片段功能可以简化这一过程的一部分。这里是一个非常简单的片段,只要你输入 si
,就会包含两个导入。你也可以配置更复杂的例子。
访问python片段。
创建代码段。
实践中的片段。
12 - 改变内核
如果你正在使用conda或虚拟环境,能够快速改变笔记本的环境是非常有用的。
在2021年10月的版本中,你还可以过滤这个列表(如果你想摆脱 "垃圾 "环境)。通过搜索Jupyter得到这里。过滤内核。
13 - 连接到远程服务器
如果你有一个远程Jupyter服务器,你也可以连接到它。
14 - 支持WSL
我在过去写过关于使用WSL的文章。VSCode与WSL整合得很好,所以你可以用简单的整合方式在Windows或Linux上开发。有了Windows 11,WSL的安装过程甚至比以前更容易。
15 - 查看绘图
VSCode支持可视化,就像标准的笔记本一样。此外,你可以在一个单独的标签中查看所有不同的绘图。我发现把所有的图放在一个地方进行并列分析是很有帮助的。
还有一些保存和查看图表的选项。
16 - 插件
VSCode有100多个(也许1000多个)额外的插件,你可能想在你的环境中使用。 其中一个我很喜欢的是Project Manager。我用它将我的各种项目组合在一起,并快速启动VSCode,将所有的代码放在一个地方。
总结
在过去的几个星期里,我一直使用VSCode进行笔记本开发。我花了一些时间来适应新的工作流程,但我想我将继续使用这种方法。
本文中的许多功能都是在几个月前才开始使用的。 所以,我很高兴看到发展的样子,以及社区在未来会开发出什么样的新功能。
如果你在自己的开发过程中,有其他使用这些新功能的经验,请在评论中告诉我。另外,如果你有任何有助于笔记本开发的插件,我很想听听。