对 Python 的爱与恨:那些不得不说的优缺点

 
图片来源于网络

Python 流行度

若是你们身处互联网,必定可以切身地感觉到 Python 语言的流行程度。Python 语言因为其简单易学、语法优美、应用领域普遍等诸多优势,俘获了大批的粉丝。可是,拿不出确切的证据,不少开发者也没法说服本身静下心来学习。接下来咱们就用数据来讲话。算法

编程语言排行榜

首先,咱们了解一下近期编程语言排行榜中,Python 语言排名的变化。TIOBE 每月发布的编程语言排行榜是编程语言流行趋势的一个指标,每月更新。这份排行榜排名基于互联网上有经验的工程师、课程和第三方厂商的数量,使用搜索引擎进行计算而得,必定程度上反应了编程语言的热度。编程

 
2017年9月TIOBE编程语言排行榜

 
2017年10月TIOBE编程语言排行榜

 
2017年11月TIOBE编程语言排行榜

从近三个月的排行看,Python 一直稳定在排行榜的前五名。但编程语言排行榜仅能反应 Python 语言当下的流行程度,并不能回答 Python 是否愈来愈流行这个问题。不过,咱们能够从 TIOBE 发布的历史数据中找到一些线索。在 2015 年 2 月份发布的 TIOBE 编程语言排行榜中,Python 还排在第 8 名的位置,短短两年半的时间,Python 语言已经蹿升到第 4 名,其上升速度不可谓不快。api

Google trends

既然 TIOBE 的编程语言排行榜是根据搜索引擎获得的数据,那么,咱们也能够经过搜索引擎获得 Python 的搜索指数,经过搜索指数来查看 Python 语言热度的变化。图1.1 给出了最近 4 年,Python 这个关键词的 Google 搜索指数。微信

 
图 1.1 Python 的 Google 搜索指数

图1.1中能够看到,从全球范围来看,Python 语言是愈来愈流行的,其热度超过了以往任什么时候候。从中国的搜索指数来看,Python 语言已经不是愈来愈流行这么简单了,而是出现了爆发式的增加。2014 年之前,Python 在中国都属于小众语言,从 2014 年开始,Python 在中国愈来愈火爆。一个有趣的事实是,在图 1.1 给出的 Python 搜索指数中,Python 在中国的搜索每一年都会有一个很是明显的、向下的尖刺。这个尖刺所在的时间正好与春节的时间吻合,说明春节对全部中国人都是一个重要的节日,在春节期间,不多有人还在专研技术了。网络

微信搜索指数

咱们再来看一下最新发布的微信搜索指数中,Python 语言的热度如何。图 1.2 给出了Python、Java、PHP 和 Ruby 的微信搜索指数对比图。多线程

 
图 1.2 Python的微信搜索指数

因为微信最多支持 4 个关键词进行比较,所以,咱们选择了 Java、PHP、Ruby 与 Python 进行比较。选择 Java 是由于它是一门比 Python 使用更加普遍的编程语言;选择 PHP 是由于它被认为是“世界上最好的”编程语言;选择 Ruby 是由于,它是全部编程语言中,与 Python 定位最近接近的编程语言。从图中能够看出,Python 语言和 Java 语言的微信搜索指数遥遥领先,而且,Python 语言的微信搜索指数比 Java 语言还要略高一点。架构

基于以上的编程语言排行榜、Google 搜索指数和微信搜索指数这几个不一样的数据来源,检视了 Python 语言的流行程度。如今,咱们能够很是明确的得出一个结论——Python 语言愈来愈流行,并且如今很是火。并发

那么为何 Python 语言会愈来愈流行呢?app

缘由诸多,如愈来愈多的工程师使用 Python 进行大数据处理;科研工做者开始使用 Python 来进行数据分析;系统管理员使用 Python 管理 Linux 系统;开源的云计算平台 OpenStack 使用 Python 语言开发;不少编程爱好者使用 Python 进行爬虫等。可是,笔者认为,Python 语言之因此愈来愈流行,使用愈来愈普遍,主要仍是得益于其自身的诸多优势。运维

对 Python 的爱与恨:那些不得不说的优缺点

显著的优势

Python 语言拥有诸多的优势,这其中,如下几个优势特别显著:

  1. 简单易学: Python 语言相对于其余编程语言来讲,属于比较容易学习的一门编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。正是由于 Python 语言简单易学,因此,已经有愈来愈多的初学者选择 Python 语言做为编程的入门语言。例如,在浙江省 2017 年高中信息技术改革中,《算法与程序设计》课程将使用 Python 语言替换原有的 VB 语言。

  2. 语法优美: Python 语言力求代码简洁、优美。在 Python 语言中,采用缩进来标识代码块,经过减小无用的大括号,去除语句末尾的分号等视觉杂讯,使得代码的可读性显著提升。阅读一段良好的 Python 程序就感受像是在读英语同样,它使你可以专一于解决问题,而不用太纠结编程语言自己的语法。

  3. 丰富强大的库: Python 语言号称自带电池(Battery Included),寓意是 Python 语言的类库很是的全面,包含了解决各类问题的类库。不管实现什么功能,都有现成的类库可使用。若是一个功能比较特殊,标准库没有提供相应的支持,那么,很大几率也会有相应的开源项目提供了相似的功能。合理使用 Python 的类库和开源项目,可以快速的实现功能,知足业务需求。

  4. 开发效率高: Python 的各个优势是相辅相成的。例如,Python 语言由于有了丰富强大的类库,因此,Python 的开发效率可以显著提升。相对于 C、C++ 和 Java 等编译语言,Python 开发者的效率提升了数倍。实现相同的功能,Python 代码的文件每每只有 C、C++ 和 Java 代码的 1/5~1/3。虽然 Python 语言拥有不少吸引人的特性,可是,各大互联网公司普遍使用 Python 语言,很大程度上是由于 Python 语言开发效率高这个特色。开发效率高的语言,可以更好的知足互联网快速迭代的需求,所以,Python 语言在互联网公司使用很是普遍。

  5. 应用领域普遍: Python 语言的另外一大优势就是应用领域普遍,工程师可使用 Python 作不少的事情。例如,Web 开发、网络编程、自动化运维、Linux 系统管理、数据分析、科学计算、人工智能、机器学习等等。Python 语言介于脚本语言和系统语言之间,咱们根据须要,既能够将它当作一门脚本语言来编写脚本,也能够将它当作一个系统语言来编写服务。

不可忽视的缺点

毫无疑问,Python 确实有用不少的优势,每个优势看起来都很是吸引人。可是,Python 并非没有缺点的,最主要的缺点有如下几个:

  1. Python 的执行速度不够快。固然,这也不是一个很严重的问题,通常状况下,咱们不会拿 Python 语言与 C/C++ 这样的语言进行直接比较。在 Python 语言的执行速度上,一方面,网络或磁盘的延迟,会抵消掉部分 Python 自己消耗的时间;另外一方面,由于 Python 特别容易和 C 结合起来,所以,咱们能够经过分离一部分须要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用 Python 脚本将这部分应用链接起来,以提升程序的总体效率。
  2. Python 的 GIL 锁限制并发: Python 的另外一个大问题是,对多处理器支持很差。若是读者接触 Python 时间比较长,那么,必定据说过 GIL 这个词。GIL 是指 Python 全局解释器锁(Global Interpreter Lock),当 Python 的默认解释器要执行字节码时,都须要先申请这个锁。这意味着,若是试图经过多线程扩展应用程序,将老是被这个全局解释器锁限制。固然,咱们可使用多进程的架构来提升程序的并发,也能够选择不一样的 Python 实现来运行咱们的程序。
  3. Python 2 与 Python 3 不兼容: 若是一个普通的软件或者库,不可以作到后向兼容,那么,它会被用户无情的抛弃了。在 Python 中,一个槽点是 Python 2 与 Python 3 不兼容。由于 Python 没有向后兼容,给全部的 Python 工程师带来了无数的烦恼。

如何上手?

了解了 Python 的总体趋势及优缺点,接下来天然是如何学习 Python?在此笔者的建议是:

  • 找一本浅显易懂比较好的教程,无须多种选择,仅精选一本,从头至尾看完。将教程中的案例本身亲手实践一遍。
  • 经过实际项目练手。若是仅是纸上谈兵,可能过目就忘,因此最好是要有真实的项目作。注意,真实项目不必定非要是商业项目,例如本身动手搭建网站,其关键是要核心功能完整。
  • 最好能找到一个已经会 Python 的人。问他一点学习规划的建议,而后在遇到卡壳的地方找他指点。这样会事半功倍。可是,要学会搜索,学会如何更好地提问。

如下,本文也整理了一些有关 Python 学习及指导资料:

  1. 很多开发者纠结 Python 的入门究竟该从 2.x 仍是 3.x 开始学起?毕竟 Python 2.x 与 3.x 不兼容。 因此咱们该如何抉择?又该如何快速着手呢?详情可查看「疯狂上涨的 Python,开发者应从 2.x 仍是 3.x 着手?」。

  2. Python 编程的核心知识有哪些?是否有比较通俗易懂的经验分享?详情可查看「一文总结学习 Python 的 14 张思惟导图」。

  3. 技巧篇:「编写高质量Python代码的5个优化技巧

  4. Python 的案例分享:

    • 一小时入门 Python 3 网络爬虫
    • 从 500 万条的微博语料对鹿晗、关晓彤微博的热门评论进行情感分析
    • 国庆去哪里人最多?用 Python 抓取的热力图告诉你!
    • 用不到 50 行的 Python 代码构建最小的区块链

最后,在选择使用哪一门编程语言以前,我还想提醒读者的是——“世界上只有两种编程语言,一种是每天被人吐槽但却被普遍使用的编程语言,一种则是无人问津没有存在感的编程语言”。Python 语言做为排名第一的动态类型语言,天然有它的道理。若是咱们充分了解它的优缺点,在使用的时候,取其精华去其糟粕,那么,Python 必定是工程师解决问题的一把利剑。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------