推荐Python初学者的好用工具:Google Colab|数位时代
高品质数位生活指南。少数派帮你更好地运用数位产品或科学方法,提升你的工作效率和生活品质。编按:本文作者为大学教授,这篇文章是他有关Python学习的方法分享。编按:本文作者为大学教授,这篇文章是他有关Python学习的方法...
高品质数位生活指南。少数派帮你更好地运用数位产品或科学方法,提升你的工作效率和生活品质。
编按:本文作者为大学教授,这篇文章是他有关Python学习的方法分享。
编按:本文作者为大学教授,这篇文章是他有关Python学习的方法分享。
这个学期,我在北德克萨斯大学(University of North Texas)教“INFO 5731: Computational Methods for Information Systems”课程,主要内容包括: Python基础、自然语言处理,以及机器学习。
授课的对像是资讯科学、数据科学专业的硕士与博士研究生。跟在中国一样,我依然使用翻转教学(flipped instruction)方式。过去的几周,我们把“Python基础”部分学完了。
每周,我都会要求学生在课前阅读两本教材上的指定章节,然后把所有的程式码自己重复一遍。在此基础上,对每一段程式码,学生都要自己试着进行一些改动。出错也没有关系,尝试解决。
因为绝大部分学生,都是Python初学者。因此他们都会遇到以下的实际问题:
这些问题,也构成了学生的痛点。
如果不能有效加以解决,学生会把每周宝贵的学习时间,浪费到许多瑣碎的无用功上。更可能的情况,是他们的信心会被打击,导致丧失学习的动力和兴趣。
因此,我为他们找到了一款合适的Python练习工具。这里,我把这款工具也分享给你。
这款工具,就是Google Colab。我曾经在〈如何免费云端运行Python深度学习框架?〉一文中为你介绍过它,在〈如何用Python和循环神经网络做中文文本分类?〉和〈如何用Python和循环神经网络预测严重交通拥堵?〉里,我也曾用它给你做过程式码的展示。
下面,我给你们介绍一下如何用Google Colab应对上述的4个痛点,为你的Python练习提供辅助。
环境
新手最常见的问题,就是好不容易累积了学习的兴趣,上手不久便遇到报错。而Python新手遇到的许多错误,实际上都和环境的配置有关。例如说,Anaconda套件下载环节,你就不知道该选择哪个版本。
好不容易安装好了,因为路径设置问题,连Jupyter Notebook都呼叫不出来。终于能输入程式码了。结果一输入就提示,你要调用的模块名称,没听说过!
而这些,Google Colab都帮你处理好了。只需要打开一个浏览器(推荐Google Chrome或者Firefox),输入:https://colab.research.google.com就可以看到以下页面。

选择新建Python 3笔记本,然后就能看到完全配置好的Python运行环境了。

对,就是这么简单。你可别小看这个运行环境,虽然你没有执行任何安装过程,但是它基本上涵盖了你做数据科学分析要用到的各种工具,这些工具包括但不限于Numpy、Scipy、Pandas等,甚至连深度学习的框架,例如Tensorflow、Keras和Pytorch,也是一应俱全。
Google Colab的深度学习环境支援,可不只是软件那么简单。Google慷慨的提供了GPU,甚至是更专业化的TPU,供你免费使用。
预设状态下,这些云端硬件是不开启的。你需要在选单栏中选择runtime,然后选择Change runtime type,就可以看到不同硬件支援的选项了。

有的书籍样例程式码,甚至是Python组件,都需要Python 2环境才能运行,这也没关系。点击新建笔记本,你就能使用不同的Python版本。
细心的你会发现,在上面的“修改运行时设置”页面里,也可以随时调整Python版本。
求助
作为新手,你遇到错误和问题,是完全正常的。而Python具有强大的社交,可以提供很多帮助。
但如果你尝试过,便可能有一种错觉——这些Python高手很不友善。因为你贴了问题,却没人理你。其实,这很可能是你问问题的方式不对。想想看,你笼统地说一个报错资讯,可能的原因或许有数十甚至上百种,谁能帮你一一排除?这倒也罢了。可是你明明贴了一段程式码,还给出了错误资讯的截图啊,为什么还是没有人伸出援手?因为这些资讯,可能依然不够。
想想看,你本机安装了什么样的套件?其中的各种模块,都分别是什么版本?你执行当前程式码有问题,那上下文是什么?会不会是因为之前某个程式码段落,影响了你当前段落的执行?你的作业系统,是否完全支援你正在使用的组件功能……这些可能性,无穷无尽。同样,也没有人这样花时间帮你列举。
但是有了Google Colab,你提问的效果却可以大大提升。因为,你可以用最简单的方法,让潜在的回答者复现你的问题。这就是,把你的笔记本共享出去。如下图,点击笔记本右上角的Share按钮。

在出现的对话框里,注意选择权限。选成可以浏览(view),就可以了。
然后,选择“复制链接”,链接就到了你的剪切板里面了。把它连同你的文字描述,直接贴到Python的论坛或者课程讨论区里。别人只需要点击,就能查看你的全部程式码、报错资讯。而且,还能运行你的笔记副本。注意,虽然你两可能用的是不同的作业系统、不同的浏览器,但因为都用了Google Colab,你们的Python环境是完全一致的。等到对方解决了问题,他还可以把完整的笔记本再用连结方式分享给你。你的问题于是迎刃而解。
问问题,只是寻求帮助的一个方面。在提问之前,你还是应该自己尝试一下解决的。毫不愿意思考,直接当伸手党,社区里的人很难喜欢跟你打交道。而Google Colab为你主动寻找问题答案提供了工具支持。每当你遇到报错的时候,你都会看到下方有个按钮。

点击这个按钮, Google Colab就会用搜寻引擎,在Stackoverflow这个IT问答站点上,帮你寻找相关报错的已有答案。

一般来说,点击前几条资讯,你就会有收获。例如这次,你就很幸运,因为答案明确说明,这是因为Python版本带来的差异。你只需要根据提示,进行程式码的轻微调整,就能正常运行了。
协作
不知你有没有尝试过跟人协作编写程式码?我的课上,是有小组作业的。要求学生2–3人一组,一起用Python解决问题。有的人,是这样协作的:自己写一段程式码,用邮件发给对方;对方改完,发回来;自己在上面修改添加,再发回去……
这样显然效率很低。有没有高效的方法?当然有。依然利用我们刚才已经见到过的共享功能。
只是这一次,在选择权限的时候,给对方“可修改”权限。

例如还是刚才的print命令没有加括号的问题。只不过这次,对方除了能看到你的问题,还可以直接编辑。你的协作者,新建了一个代码块,并且输入了正确的资讯。
在你这里看起来,就是这个样子的。协作者的头像,会显示在对应的修改内容旁边。这样一目了然。

对方还可以在程式码块旁,选择添加注释。

例如输入以下内容。

你可以同步在自己的笔记本上,看到对方的注释。

这样一来,团队协作Python练习沟通的效率,自然就高了许多。
注意,为了安全起见,一定只能把该权限,限定在你信任的协作者中。
如果是打算把你的成果展示出来,你可以使用Google Colab与Github的集成功能。如下图,选择保存副本到Github。

然后,选择你希望保存到的Github专案。
保存完毕后,对应的Github页面会自动打开,供你预览。其中可以包含全部的文字、图片、程式码和输出信息。注意笔记本的顶部,有一个“在Colab打开”的连结。

点击它,你就能迅速开启Google Colab环境,并且直接运行这个Github上的笔记副本。
版本
当你不停地尝试和改动代码的时候,很有可能会把问题改得更加糟糕。这时候,你恨不得有一个时光机,可以让你回到错误少一点的时候。这个时光机,Google Colab是提供了的。
点击选单里面的Revision history功能,你就能看到当前笔记本已保存的全部历史版本,包括修改时间、谁改的、文件大小等各种资讯,一应俱全,想回到哪个版本,点一下“恢复”按钮就可以了。
另外,你也可以把Google Colab笔记本,直接下载成为ipynb文件,在本地保存副本。
一定要注意选择需要的储存路径,避免不知存到哪里去了。

我一般让学生交作业的时候,都需要同时提交Google Colab连结,以及一个ipynb文件。二者的内容,应该是一样的。既然如此,为什么还需要提交两样东西呢?这个问题,作为思考题,留给你。请注意联系本节标题,加以分析。
有了ipynb文件,你可以用本地的Jupyter Notebook开启。但是如果你只是想查看内容的话,这里给你推荐一个更好的工具,叫做nteract。它可以帮你直接开启ipynb文件,用于查看。这样,你就没必要每次都用Jupyter Notebook命令开启后台服务,然后再到浏览器中点开对应的ipynb了。
小结
还记得在《如何高效学Python ?》一文中,我给你推荐过的经典教材《笨办法学Python》吧?
《笨办法学Python》指出了一条看似笨拙,却非常有效的学习路径。我上课的时候,也一直在跟学生们强调——Python这样的实践类技能,只能练中学(Learn by doing)。
本文给你推荐的Google Colab,可以帮你解决Python初学者练习实践Python程式编辑时,最常遇到的几大痛点。包括:
这样一来,你可以把宝贵的时间,聚焦在技能的掌握和应用;而不是久病成医,成为“环境配置专家”了。
祝Python程式编辑学习愉快!
本文授权转载自:少数派;作者:玉树芝兰