低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Python 工程师如果还不会 Jupyter Notebook,可能就落伍了 | 极客时间

2019 年 6 月 12 日

Python工程师如果还不会Jupyter Notebook,可能就落伍了 | 极客时间

你好,我是景霄,我在极客时间开设了《Python核心技术与实战》专栏,带大家从工程实战角度系统掌握 Python 的核心知识点,告别不会写代码、写不出项目的困境。


今天和大家聊聊现代 Python 最新的必学工具–Jupyter Notebook。毫不夸张地说,根据我对 Facebook 等硅谷一线大厂的了解,一个 Python 工程师如果现在还不会使用 Jupyter Notebook 的话,可能就真的太落伍了。


曾在 2017 年底,Stack Overflow 发布了在该站上各种语言的提问流量。其中,Python 已经超过了 JavaScript 成为了流量最高的语言,预测在 2020 年前会远远甩开 JavaScript。



可能你已经知道,Python 在 14 年后的“崛起”,得益于机器学习和数学统计应用的兴起。那为什么 Python 如此适合数学统计和机器学习呢?作为“老司机”的我可以肯定地告诉你,Jupyter Notebook 功不可没。


磨刀不误砍柴工,高效的工具让我们的编程事半功倍。这一节课,我就来带你学习一下 Jupyter Notebook,为后面的 Python 学习打下必备基础。


什么是 Jupyter Notebook?

说了这么多,到底什么是 Jupyter Notebook?按照 Jupyter 创始人 Fernando Pérez 的说法,他最初的梦想是做一个综合 Ju (Julia)、Py (Python)和 R 三种科学运算语言的计算工具平台,所以将其命名为 Ju-Py-te-R。发展到现在,Jupyter 已经成为一个几乎支持所有语言,能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学运算平台。


英文里说一图胜千言(A picture is worth a thousand words)。看下面这个图片,你就明白什么是 Jupyter Notebook 了。



你在一个框框中直接输入代码,运行,它立马就在下面给你输出。怎么样,是不是很酷?你可能会纳闷儿,这样一个看起来“华而不实”的玩意儿,真的就成了 Python 社区的颠覆者吗?说实话放在几年前我也是不信的。


那 Jupyter 究竟解决了哪些别人没有解决的问题呐?


Jupyter 的优点

1、整合所有的资源

在真正的软件开发中,上下文切换占用了大量的时间。什么意思呢?举个例子你就很好理解了,比如你需要切换窗口去看一些文档,再切换窗口去用另一个工具画图等等。这些都是影响生产效率的因素。


正如我前面提到的,Jupyter 通过把所有和软件编写有关的资源全部放在一个地方,解决了这个问题。当你打开一个 Jupyter Notebook 时,就已经可以看到相应的文档、图表、视频和相应的代码。这样,你就不需要切换窗口去找资料,只要看一个文件,就可以获得项目的所有信息。


2、交互性编程体验

在机器学习和数学统计领域,Python 编程的实验性特别强,经常出现的情况是,一小块代码需要重写 100 遍,比如为了尝试 100 种不同的方法,但别的代码都不想动。这一点和传统的 Python 开发有很大不同。如果是在传统的 Python 开发流程中,每一次实验都要把所有代码重新跑一遍,会花费开发者很多时间。特别是在像 Facebook 这样千万行级别的代码库里,即使整个公司的底层架构已经足够优化,真要重新跑一遍,也需要几分钟的时间。


而 Jupyter Notebook 引进了 Cell 的概念,每次实验可以只跑一小个 Cell 里的代码;并且,所见即所得,在代码下面立刻就可以看到结果。这样强的互动性,让 Python 研究员可以专注于问题本身,不被繁杂的工具链所累,不用在命令行直接切换,所有科研工作都能在 Jupyter 上完成。


3、零成本重现结果

同样在机器学习和数学统计领域,Python 的使用是非常短平快的。常见的场景是,我在论文里看到别人的方法效果很好,可是当我去重现时,却发现需要 pip 重新安装一堆依赖软件。这些准备工作可能会消耗你 80%的时间,却并不是真正的生产力。


Jupyter Notebook 如何解决这个问题呢?


其实最初的 Jupyter Notebook 也是挺麻烦的,需要你先在本机上安装 IPython 引擎及其各种依赖软件。不过现在的技术趋势,则是彻底云端化了,例如Jupyter官方的Binder平台Google提供的 Google Colab环境。它们让 Jupyter Notebook 变得和石墨文档、Google Doc 在线文档一样,在浏览器点开链接就能运行。


所以,现在当你用 Binder 打开一份 GitHub 上的 Jupyter Notebook 时,你不需要安装任何软件,直接在浏览器打开一份代码,就能在云端运行。


Jupyter Notebook 初体验

学习技术的最好方法就是用技术。不过,在今天的篇幅里,我不可能带你完全学会 Jupyter Notebook 的所有技巧。我想先带你直接感受一下,使用 Jupyter Notebook 的工作体验。


比如这样一个GitHub文件。在Binder中,你只要输入其对应的 GitHub Repository 的名字或者 URL,就能在云端打开整个 Repository,选择你需要的notebook,你就能看到下图这个界面。



每一个 Jupyter 的运行单元都包含了 In、Out 的 Cell。如图所示,你可以使用 Run 按钮,运行单独的一个 Cell。当然,你也可以在此基础上加以修改,或者新建一个 notebook,写成自己想要的程序。赶紧打开链接试一试吧!


另外,我还推荐下面这些 Jupyter Notebook,作为你实践的第一站。



如果你想在本地或者远程的机器上安装 Jupyter Notebook,可以参考下面的两个文档。

安装:https://jupyter.org/install.html

运行:https://jupyter.readthedocs.io/en/latest/running.html#running


总结

这节课,我在《Python核心技术与实战》为你介绍了 Jupyter Notebook,并告诉你它为什么日趋成为 Python 社区的必学技术。这主要是因为它的三大特点:整合所有的资源、交互性编程体验和零成本重现结果。但还是那句话,学习技术必须动手实操。这节课后,希望你能自己动手试一试 Jupyter Notebook,后面我们的一些课程代码,我也会用 Jupyter Notebook 的形式分享给你。


除了最新工具外,我在《Python核心技术与实战》里讲解了很多关键知识点,比如并发编程、垃圾回收机制等等。为了方便大家系统掌握 Python,我亲自制作了一份「Python 知识图谱」,可以让你对 Python 核心知识有个清晰的认识。



专栏里每篇文章的留言,也是很精彩,形成了我很喜欢的“互动学习”氛围。比如,大家会针对文章中某个知识点,纷纷留言探讨,我也会及时给予反馈和解答。像这样既有老师带路、又能及时得到高手解答,还能有一群一起学习的小伙伴相伴,不可多得。


换句接地气的话说:“就是找到组织的感觉”。


大家可以看看这些问题,你是不是也有?




除此之外,每篇文章后,我都会留下一个思考题,帮助大家更好吸收知识。


举个例子,在「第 4 篇 | 字典、集合,你真的了解吗?」中,我讲解了 Python 最常见的 2 种数据结构,留下了这道思考题:



在留言区,你能看到大家各种各样的解题思路,其中有的你可能会意想不到,可以说,在留言区你也能学到很多。我也会留言回复,解答大家提出的问题,或者给予及时反馈。



我会带你从原理到核心技术,比如 Python 协议、高级语法、协程、并发编程、垃圾回收机制等等,再到如何用这些技能写出高质量的应用程序。最后,我还会手把手带你做一个量化交易系统,把进阶知识点全部串起来跟着我学,100 天进阶 Python 高手!


2019 年 6 月 12 日 16:078064

评论

发布
暂无评论
发现更多内容

Oracle数据库的安装和使用指导

攻城狮Chova

数据库 oracle 安装 4月日更

3d导航栏

赫鲁小夫

4月日更

你在备战“字节”时一定需要这个,程序员进大厂指南+算法已开源

Java架构师迁哥

架构实战营模块1作业

竹林七贤

架构实战营模块 1 作业

Geek_2b52aa

架构实战营

【Java 试题】AQS解析

程序员架构进阶

AQS Java源码 28天写作 四月日更 4月日更

教你一个著名的流行数据格式:Python JSON

华为云开发者社区

Python 数据 Python JSON JSON序列化 半结构化数据

架构训练营

架构训练营

翻译:《实用的Python编程》07_05_Decorated_methods

codists

Python

架构实战营模块1作业

阿体

假期后来一波干货:一文理清JVM和GC

比伯

Java 程序员 架构 JVM 计算机

模块一:课后作业

a1vin-tian

架构实战营

架构实战营-模块1-微信业务架构-学生系统架构备选方案

吴建中

架构实战营第一次作业

CmHuang

架构实战营

架构实战营模块一总结

竹林七贤

数字化时代,都说企业转型迫在眉睫,如何转型成了关键?

一只数据鲸鱼

物联网 数字化 数据可视化 企业转型

企业为何开始选择使用成品训练数据集?

澳鹏Appen

人工智能 机器学习 数据集 人工智能大数据 数据流

如何用 iMazing 备份和恢复辐射避难所

懒得勤快

手机 游戏 ios管理 imazing

2021最新中高阶Android面试题总结,成功入职阿里

欢喜学安卓

android 程序员 面试 移动开发

Spring Boot + RabbitMQ实现订单过期自动取消功能

Lonely Sufferer

RabbitMQ springboot

“区块链+版权”应用保护者

电微13828808271

什么是 NIO ?6000 字详解 NIO

hepingfly

Java nio IO流

手起刀落,连斩获阿里(四面)+字节(四面)+美团(三面)三家一线大厂Offer!

Java架构追梦

Java 架构 阿里巴巴面试经历 腾讯面试经历 全套大厂面试真题

独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless

Serverless Devs

阿里云 运维 云原生 #Serverless

2021互联网大厂面经最新分享:百度/阿里/蚂蚁(附答案解析)

比伯

Java 架构 面试 程序人生 技术宅

不是吧?不会多态,你还说自己会Java

学Java关注我

Java 编程 架构 程序人生 技术宅

“区块链+”,应用积分营销

电微13828808271

区块链

《iOS应用逆向与安全》

马士兵-苹果老师

读后感

2021 年推荐给 React 开发者的 Visual Studio Code 插件及配置

清秋

推荐 vscode 插件 React 4月日更

超低功耗LoRa无线通信应用实践

不脱发的程序猿

物联网 无线通信 四月日更 LoRa 无线通信模组

CSS实现动画环绕下划线效果

Sakura

四月日更

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Python工程师如果还不会Jupyter Notebook,可能就落伍了 | 极客时间-InfoQ