写点什么

前言、Python 是真的火,还是炒得火?来看看它的前世和发展

用户头像
刘润森
关注
发布于: 2020 年 09 月 26 日

@Author:BY Runsen


1、Python 的前世和发展


Python 的前世


1989 年圣诞节前夕,山雨欲来风满楼,计算机程序设计语言界隐隐有大事要发生,果然不出所料。江湖人称龟叔(Guido von Rossum),就是这位祖籍荷兰的大牛,在圣诞节百无聊赖的期间,发明了 Python。



之所以选中 Python 作为程序的名字,是因为龟叔是 BBC 电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。ABC 是由参加设计的一种教学语言。就龟叔本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。


但是由于 ABC 语言并没有成功,究其原因,龟叔认为是非开放造成的。龟叔决心在 Python 中避免这一错误,并获取了非常好的效果,完美结合了 C 和其他一些语言。


就这样,Python 在龟叔手中诞生了。那时,龟叔还在荷兰的 CWI(Centrum voor Wiskunde en Informatica,国家数学和计算机科学研究院)。龟叔给 Python 的定位是“优雅”、“明确”、“简单”


1991 年,第一个 Python 编译器诞生。它是用 C 语言实现的,并能够调用 C 语言的库文件。从一出生,Python 已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。


实际上,Python 第一个实现是在 Mac 计算机上。可以说,Python 是从 ABC 发展起来,主要受到了 Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响,并且结合了 Unix shell 和 C 的习惯。


1991 年初,Python 发布了第一个公开发行版。


2000 年 10 月 16 日,Python 2.0 版本发布,增加了实现完整的垃圾回收,并且支持 Unicode。同时,整个开发过程更加透明,社群对开发进度的影响逐渐扩大。


2008 年 12 月 3 日,Python 3.0 版本发布,此版不完全兼容之前的 Python 源代码。不过,很多新特性后来也被移植到旧的 Python 2.6,2.7 版本


Python 的特性



(1)简单易学:Python 极其容易上手,因为 Python 有极其简单的说明文档。


(2)免费、开源:Python 是 FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。


(3)高层语言:用 Python 语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。


(4)可移植性:由于它的开源本质,Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台 上)。这些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、 BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian 以及 Google 基于 linux 开发的 android 平台。


(5)丰富的库:Python 标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)


上面介绍了 Python 的优点,其实 python 的也有缺点


(1)运行较慢:相较于 c, c++ ,Java 编译型语言,python、javascript 解释型语言不是编译成机器码,而是编译成中间码。Python 在解释器而不是编译器的帮助下执行,这将导致它变慢,因为编译和执行有助于它正常工作。


因为 Python 在定义变量或函数时不会声明类型,即使在编译为 pyc 字节码后变量的类型以及函数返回类型都是未知的,通过上下文推算出实际的类型,是需要占用内存消耗的。比如 a + b 先要通过复杂的上下文推荐得出 a 和 b 的实际类型,进而再转换为对应的机器指令,不像其他强类型语言,比如 java,所有数据类型在编译为 class 文件时都已经确定了,不需要额外耗时去做类型推算。


(2)性能差:Python 的开箱即用的性能速度依然落后于其他语言,比如说具有同样简单语法的 Nim 和 Julia,却可以被编译为机器代码,具有更高的性能优势。


比如,著名的知乎推荐系统用 Go 替代 Python,随着业务发展,发现 Python 作为动态解释型语言,较低的运行效率和较高的后期维护成本带来的问题逐渐暴露出来:


  • 运行效率较低。知乎目前机房机柜空间已经不足,按照目前的用户和流量增长速度,可预见将在短期内服务器资源告急(针对这一点,知乎正在由单机房架构升级为异地多活架构);

  • Python 过于灵活的语言特性,导致多人协作和项目维护成本较高


毕竟 Python 是通用型,高级的动态编程语言。强调的是 code readability,它的句法使得程序员能够比在 C++或者 java 的静态编程语言相比,编写更少的代码行数。


下面介绍一些的 Python 常用高级特性


(1)lambda


lambda 函数可以使用任意数量的参数,但必须始终只有一个表达式,我们这样做是因为 lambda 函数的目的是执行某种简单的表达式或操作,而无需完全使用 def 定义函数。


In [1]: x = lambda a, b : a * b
In [2]: x(2,3)Out[2]: 6
复制代码


我们执行了一些基本的数学运算,而无需定义完整的函数。这是 Python 的众多功能之一,使其成为一种简洁易用的编程语言。


(2)Map


Map 函数是一个内置的 Python 函数,用于将函数应用于像列表或字典这样的元素序列。这是执行此类操作的非常干净且最重要的可读方式。map 不改变原 list,而是返回一个新 list


In [3]: list(map(lambda x:x*x ,(1,2,3)))Out[3]: [1, 4, 9]
复制代码


(3)列表循环


列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅的方法。它可以基于现有的列表做一些操作,从而快速创建新列表。


In [4]: a,*b,c,d = list(range(10))
In [5]: aOut[5]: 0
In [6]: bOut[6]: [1, 2, 3, 4, 5, 6, 7]
In [7]: cOut[7]: 8
In [8]: dOut[8]: 9
In [9]: [x*x for x in range(5) if x%2!=0]Out[9]: [1, 9]
复制代码


(4)生成器


通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。


在 Python 中,这种⼀边循环⼀边计算的机制,称为⽣成器:generator。这样就不必创建完整的 list,从⽽节省⼤量的空间。


In [10]: a = (i for i in range(5))
In [11]: aOut[12]: <generator object <genexpr> at 0x0000023269845750>
In [13]: next(a)Out[13]: 0
In [14]: next(a)Out[14]: 1
复制代码


Python 发展


进入 2020 年 3 月,新的编程语言排行榜新鲜出炉,TIOBE 最新发布了 3 月编程语言排行榜。



从榜单中我们可以看到,前三名分别为 Java、C、Python。相较于上个月,Python 继续以 1.85% 上升至 10.11%,以 10.11% 的份额稳居第三。


Python 可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用 Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用 Python 来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。


不可否认,Python 确实是这个时代最流行、也必须要掌握的编程语言。Python 可以运用在数据处理、Web 开发、人工智能等多个领域,它的语言简洁、开发效率高、可移植性强,并且可以和其他编程语言(比如 C++)轻松无缝衔接。现如今,不少学校的文科生甚至中学生也开设了此课程,可见其重要程度。


Python 职业发展方向


(1)网络爬虫


Python 较为常用的情况就是网络爬虫,最早使用 Python 进行网络爬虫的是 Google,而 Python 也因此被带动发展起来。


Python 在这个方面有许多工具上的积累,例如,用于模拟 HTTP 请求的 Requests、用于 HTML DOM 解析的 PyQuery/BeautifulSoup、用于自动化分布式爬取任务的 Scrapy,都使得 Python 成为数据爬取的首选语言之一。Python 同时特别擅于分析与计算爬取后的数据。


(2)Linux 运维


用 python 实现的测试工具及过程,包含服务器端、客户端、web、andriod、client 端的自动化测试,自动化性能测试的执行、监控和分析,常用 selenium appium 等框架。


(3)Python Web 网站工程师


我们都知道 Web 一直都是不可忽视的存在,我们离不开网络,离不开 Web,利用 Python 的框架,Django,flask 可以做网站,而且都是一些精美的前端界面,还有我们需要掌握一些数据的应用。


(4)Python 自动化测试


大家都知道,就是 Python 语言对测试的帮助是非常大的,自动化测试中 Python 语言的用途很广,可以说 Python 太强大,掌握和熟悉自动化的流程,方法和我们总使用的各个模板,到现在为止,我了解的 Python 使用最多的应该是自动化测试。


(5)数据分析


我们都知道现在来临了大数据的时代,数据可以说明一切问题的原因,现在很多做数据分析的不是原来那么简单,Python 语言成为了做数据分析师的第一首选,它同时可以给工作带来很大的效率。


(6)人工智能


人工智能是现在大火的一个方向,这让 Python 语言的未来充满了无限的潜力。机器学习,特别是当前热门的深度学习中的大部分工具框架都提供了 Python 接口,因为 Python 的简洁清晰的语法是深受开发者喜爱的。


>本文已收录 GitHub,传送门~ ,里面更有大厂面试完整考点,欢迎 Star。


发布于: 2020 年 09 月 26 日阅读数: 147
用户头像

刘润森

关注

刘润森 2018.09.17 加入

17年就读于东莞XX学院化学工程与工艺专业,GitChat作者。Runsen的微信公众号是"Python之王",关注后回复「小白」即可免费获取原创的Python学习资料;喜欢的微信搜索:「Python之王」。个人微信号:RunsenLiu

评论

发布
暂无评论
前言、Python是真的火,还是炒得火?来看看它的前世和发展