查看原文
其他

人生苦短,你还没学Python?

2017-08-08 徐洲更 生信技能树

学习一项技能最困难的阶段就是如何开始, 这无异于是进入新的世界,接触的东西都是很难用过去经验进行衡量的,所以很容易茫然无措,觉得自己还需要准备准备,于是就再也没有然后。

这篇文章是写给那些打算学习Python的人看的,尤其是之前没有任何计算机基础的,希望你们看完之后可以学习Python。毕竟人生苦短,请用Python。



这篇文章不会谈及


  • XXX报错了,我该怎么办。初学者遇到的问题基本上都能用搜索引擎搞定,如果百度搞不定,请用英文关键字去谷歌。如果你问我的问题,是可以搜索引擎找到的,我会慎重考虑拉黑你的。

  • 基于上述这一句话,其实这篇文章也没有必要写。因为你完成可以搜索到许多入门资源,但是考虑大家未必能够甄别,这里强势推荐编程小白的第一本 Python 入门书




什么是Python


这世界上有很多编程语言,就和人类有不同语言一样,只不过编程语言是用来和计算机交流的。据我粗浅的了解,编程语言可以分为两种:

  • 编译型,代表的有C, JAVA等。 你需要把代码写好,然后通过编译器翻译成机器语言。也就是说你写好一篇文章,然后把文章全文翻译好,然后给别人看。

  • 解释型, 有R,Python等。所谓解释型,就是同声传译,你一边说,解释器一遍翻译给计算机听,然后计算机给出实时反馈。

Python是目前比较流行的语言,它的身影出现在各个场景中,目前最火的深度学习有它,传统的web开发,服务器运维有它, 知乎里还有各种用Python写爬虫的教程, 各种培训机构也都拿Python作为噱头(有人吐槽说这是因为培训机构没有能力教C/C++), 最后我们生物信息学也有biopython.

因此,Python就是一类翻译器,你可以把他看成XX词霸(欢迎植入广告),你查一句,他翻译一句。即便你把全文都打好,他也是一句一句翻译(此处不严谨,只是方便理解而已,因为涉及到字节码)



如何安装Python


对于类Unix系统,比如说LinuxmacOS, 你们都会自带一个版本的Python。在Linux中,可以通过whereis python查看Python的安装路径。一般,自带的Python用于执行系统运行相关工作。apt/yum这类软件管理器,conda(anaconda和miniconda的自带的软件管理工具)其实也采用Python用于记录软件安装,你可以根据conda的报错日志进行判断 。

在Windows中必须要从官方中下载二进制安装包进行安装。

但是,对于初学者,我建议无论是macOS,还是Linux都可以去安装一款不错的Python科学发行版,anaconda, 下载地址为 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ (这是国内的清华源,速度会比较快)。作为新手,而且你用Windows的话,你就直接去下载anaconda吧,我进过很多坑,不会骗你的。



什么是anaconda, 为什么要装anaconda


很多人问装了anaconda, 还需不需要装Python呀。 这里的回答是:不需要。

因为anaconda是Python的发行版,就像ubuntu是Linux的发行版。Linux的本身就是一个内核,没有软件管理系统,没有可视化界面,当时为了让Linux能够方便使用,所以有些公司就把一些常用软件打包,在安装Linux的时候一起安装,保证了系统能够顺利使用。 (Win7, win8, win10的安装包那么大,就是微软把很多要的,不怎么要的环境都放在一起了)。也就是说anaconda是整合许多python常用包(包,可以理解成扩展功能)简单易用版。

PS: 其实大家都不太了解Linux的发展历史,但是我觉得还是很有必要了解的。当然换个比喻,目前各种Android产商都会推出自己的手机操作系统, 其实都是对谷歌的原生Android系统进行各种定制。如果某个产商声称自己“开发“了一个新的操作系统, 其实他的意思是让安卓系统更加适合自己家手机的硬件,然后还美化了一下桌面。

简单介绍一下anaconda自带的几个功能。

  • jupyter notebook: 网页版的文本编辑器,能够用tab进行命令补全还有联想,比较适合用于代码试错阶段。

  • qtconsole: IPython的图形界面版, IPython是原生Python解释器的功能增强版(也就是vim和vi的区别,智能手机和普通手机的区别)。其实你可以在命令行下输入ipython启动,而且强烈推荐学习它。

  • spyder: 这是一种整合开发环境(IDE),常用于Python的数据分析也就是(如果你用Rstudio,你会感到莫名的熟悉感)。可以在左边输入大块代码,进行某一类数据分析,在右下方执行比较少量的代码,然后右上方则是可以在教程,变量管理,文件管理进行切换。


那么为什么要用anaconda,而不是最基本的python呢?
第一: 对于windows而言,很多第三方包的安装真的很麻烦,真的很麻烦,比如说pandas和scipy等。新手最重要的是运行,而不是瞎折腾。

第二: 在类Unix系统中,系统自带的python一般是2.7版,而现在趋势是用3.x版本的python。既然我们需要装一个3.x版本的Python, 就考虑anaconda吧。anaconda还可以进行python版本管理,自由切换不同版本的Python环境。

很多同学会纠结到底到底是哪个版本,这里我的答案就是用3.x。如果你问我为什么不去学2.7, 我的回答只有一个,你需要的时候再去学不就行了。就像你学汽车,你问教练到底是手动挡,还是自动挡。你学会开车不就行了,原理都是共通的,上路最重要。你纠结版本半天,还不如敲上几十行代码实在。

第三: 对于Windows而言,Python不是必须的。但是对于macOS和Linux而言,系统的Python一般是负责软件安装等其他任务的。作为新手,装一个anaconda,那么根据环境变量的顺序,默认会使用anaconda的python,就不要对系统的Python动手了,免得出事情。

第四:anaconda提供了conda用于管理软件安装。对于非root的用户而言,对于mac用户而言,它提供了一种方便的软件管理方式, 添加不同的频道,就可以安装

conda install conda update conda upgrae



如何运行Python


运行Python最重要的一步就是把代码解释给计算机听,所以我们安装Python,其实安装的就是解释器。其实下面的本质可以看成下面简陋的界面。

你可以和它打个招呼(>>>表示这一行是你的输入行)

>>> print("hello world") hello world

然后你可以把它当做计算器,

>>> 10*8 80

如果你成功运行了以上命令,其实你已经在编程了。

一行一行输入,也不是不可以,就是如果输错了,就得重新来一遍,而且关闭了命令行(学习生信,请和命令行做朋友)就啥都没有了。

所以我们需要专门建立一个文本,在里面存放代码,比如说我用Windows自带的记事本(一定要用纯文本,一定要用纯文本,一定要用纯文本),写了几行代码。


然后我在命令行里运行

注1: 你可能会发现,我的文件名叫做hello.txt, 而不是常见的xxx.py。 原因是解释器只负责解释输入的内容,而不会管他到底是格式。后缀只不过是用于让人类方便判断而已,计算机只管里面的内容。
注2: 所有文件都要保存在某个系统路径上才能保证下次被使用,上面的spyder默认建立了一个tmp.py,请恰当改名符合你的需求。



文本编辑器和IDE


人总是懒的, 希望敲一个代码的前几个就能联想出整个命令,希望能够自动换行。于是就有了各种文本编辑器,还有对应的插件。文本编辑器,简单的说,就是之前简陋的记事本的功能增强版。比如说我用的Visual Studio Code(其实我还用过sublime和atom, vim的插件用的不太好),还提供语法高亮。

你们可能会问,选择什么样的文本编辑器呀, 下图来自于Pythonists使用什么样的文本编辑器。


更加简单粗暴的答案就是Windows用notepad++, Linux和mac用sublime或atom。没有任何原因,单纯个人看法。

当然更近一步,当你的代码写到几百行的时候,调试代码的时候,我们需要一个工具能够告诉我们哪里出错了,或者在写代码的时候就能自动检查。这就是IDE(integer development environment), 更强大的工具。IDE有如下选择

  • Eclipse + PyDev插件,

  • Python Tools for Visual Studio

  • PyCharm

  • Spyder

对于编程语言初学者,我就不建议你们用了。个人推荐就是用Ipython测试你写在纯文本里面的代码, 然后用命令行运行,测试整体。等你写了一定量的代码后,你在用IDE也不迟。



如何把Python用于科研



综上,只要你能安装Python,然后有足够的信心,买上几本不错的教材,在平时科研生活多想想如何使用Python。假以时日,Python就能极大的提高你的工作效率。


但是,这会遇到很多坑,为了解决这些坑,你需要勤用搜索引擎,请教他人,也就是需要耗费大量的时间,同时也会消耗掉你的信心,最后不了了之。


李笑来在得到专栏里有一期讲到“速成”。迅速成功绝不可能,但是快速入门,绝对有可能,而且非常必要。就好比是把火箭送到外天空,我们必须要保证临界速度大于重力加速度,要达到第一宇宙速度,甚至是第二,第三宇宙速度。


而这个就需要一个优秀的老师,一个优秀的培训机构。2017年8月17日,莫速乎携手许教授在上海丰鑫国际大酒店开展为期三天的“Python科研应用专题学习班”,特邀请您报名参加。


不是所有会Python的人就可以当培训老师的,简单介绍一下许教授:

许教授,合肥工业大学教授、博士生导师,承担国家自然科学基金等项目通讯评审,担任国内及国际多个主流杂志审稿人;主持国家自然科学基金项目2项,承担了多个大数据项目研究工作;在国内外主流刊物发表学术论文100余篇,其中SCI/SSCI论文15篇;获得省部级科研成果奖励6项;主编多部统计学、经济计量及R软件等相关书籍。有着多年数据处理与编程计算经验,擅长PythonRMATLABEVIEWS等语言编程,在理论与应用研究两个方面编写了大量计算程序。

如果你觉得自己的时间很宝贵,欢迎阅读原文


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存