在 2019年 8 月份 TOIBE 编程语言社区公布的编程语言排行榜中,Python 已经超过了 C++,稳居排行榜第 3 名(如图 1 所示)。
我们应该知道,Python 之所有在 14 年后“崛起”,得益于机器学习和数学统计应用的兴起。至于 Python 适合数学统计和机器学习的原因,很多读者可能并不会想到,Jupyter Notebook 功不可没。可以好不夸张地说,作为一名 Python 工程师,如果不会使用 Jupyter Notebook,可能会真的太落伍了。
本节,就带领大家学习一下 Jupyter Notebook。
说了这么多,到底什么是 Jupyter Notebook 呢?按照 Jupyter 创始人的说法,起初他是想做一个综合 Ju(Julia)、Py(Python)和 R 三种科学运行语言的计算工具平台,所以将其命名为 Jupyter。
Jupyter 发展到现在,已经成为了一个几乎支持所有语言,能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学运行平台。Jupyter Notebook 的工作界面如图 2 所示。
如图 2 所示,只要直接输入代码并运行,它就会直接在代码下面显示输出结果。那么,Jupyter Notebook 对 Python 的影响真的有那么大吗?
衡量一个技术的影响力,或者说想利用自己的技术影响世界时,必定绕不开技术对教育界的影响力。
以微软的 Word 文本处理系统为例,从纯技术角度来讲,它的单机设计理念早已过时,但以 Google Doc 为代表的在线文档系统,并没有想象中实现对 Word 的降维打击。最直接的原因归咎于用户习惯,多数用户已经习惯使用 Word 来编辑、修改文档啦,之所以会这样,是因为我们从小学、中学,一直到大学期间,都在学习使用 Word。而且到了工作中,老员工还会带着新员工继续使用 Word。
从 2017 年开始,已经有大量的北美顶尖计算机课程开始使用 Jupyter Notebook 作为教学工具,而在这之前,一直使用的都是 Python 命令行的形式。不仅如此,Jupyter Notebook 在工业界的影响力更大。
例如,在 Facebook 中,几乎所有的中小型程序(比如内部的线下分析软件,机器学习模块的训练等)都是借助与Jupyter Notebook完成。同时,在硅谷其他的一线大厂中,也全部使用 Jupyter Notebook(他们用的是改进定制型的Jupyter Notebook,名称 Google Colab)。
了解了以上这些,相信你已经认可了 Jupyter Notebook 的江湖地位。
但需要注意的是,不是说那个技术流行,就盲目跟从。对于技术的选择,要学习独立的思考,切勿人云亦云。以 Facebook 为例,之所以它选择 Jupyter Notebook 等技术,很大程序上因为它有几百个产品线,几万个工程师,而如果是几个人的团队,使用同样的技术反倒成了拖累。
这里给大家总结了几点 Jupyter Notebook 的优势:
在软件开发过程中,频繁地进行上下文切换,会影响生产效率。举个例子,假设你需要切换窗口去看一些文档,再切换窗口去用另一个工具画图,不断地切换窗口就会成为影响效率的因素。
而 Jupyter Notebook 则不同,它会将所有和软件编写的资源全部放在一个地方,无需切换窗口就可以轻松找到。
在机器学习和数据统计领域,Python 编程的实验性特别强,比如为了测试 100 种不同的方法,有时就需要将一小块代码重写 100 遍,在这种情况下,如果使用传统的 Python 开发流程,每一次测试都要将所有代码重新跑一遍,会花费开发者很多时间。
Jupyter Notebook 引进了 Cell 的概念。每次测试可以只跑一小块的代码,并且在代码下方立刻就能看到运行结果。
如此强的交互性,满足了 Python 程序员可以专注于问题本身,不会被频繁的工具链拖累,也不用在命令行之间来回切换,所有工作都能在 Jupyter Notebook 上完成。
同样是在机器学习和数学统计领域,我们可能会借鉴他人分享的代码,但当我们拷贝过来想要运行时,却需要使用 pip 安装一大堆依赖的库,足以让人抓狂。而 Jupyter Notebook 就可以解决这个问题。
例如,Jupyter 官方的 Binder 平台以及 Google 提供的 Google Colab 环境,它们可以让 Jupyter Notebook 变得和 Google Doc 在线文档一样。比如用 Binder 打开一份 GitHub 上的 Jupyter Notebook 时,就不需要安装任何 Python 库,直接在打开代码就能运行。
本节,仅是为了让初学者对 Jupyter Notebook 有一个初步的了解,具体 Jupyter Notebook 的安装和使用,网络上有很多详细的教程,这里不再做过多描述。
注意,本教程仍旧使用 Python 内置的 IDLE 作为教学工具。