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


显著的优势

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


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

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

  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 工程师带来了无数的烦恼。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------运维