4006644012

c716@139.com

…本网站正在建设中

如有不便,请谅解

做调查找91调研!

探秘Python:起源,发展与特色,让你一次了解到位!
来源:www.91diaoyan.com | 作者:91diaoyan | 发布时间: 226天前 | 376 次浏览 | 分享到:
Python是一种解释型、面向对象、动态数据类型的高级编程语言,被设计用于高效而快速地完成各种 IT 任务。

Python简介


Python是一种解释型、面向对象、动态数据类型的高级编程语言,被设计用于高效而快速地完成各种 IT 任务。

Python的发展史是一部典型的励志大片。自1989年诞生以来,从名不见经传到跃居编程语言排行榜首位(2017年7月),堪称逆袭。进入21世纪的第一个十年,是Python的平稳发展期,基本稳住了前十名的地位,那时候,NASA已经在大量使用Python程序了。在21世纪的第二个十年,Python迎来了爆发式的增长。这一切得益于人工智能的迅猛发展,在这个领域Python打败了R语言,成为了如今排名第一位的编程语言。


Python本身也是由诸多其他语言发展而来的,这包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell和其他的脚本语言等等。Python第一个公开发行版发行于1991年,源代码遵循GPL(GNU General Public License)协议。现在Python是由一个核心开发团队(指导委员会)在维护。


Python起源故事


在80年代,电脑的配置很低。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,—个大的数组就能占满内存。程序员都接触并使用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器能更快运行。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。甚至有人认为C语言的指针是在浪费内存。至于动态类型、内存自动管理、面向对象   别想了,那会让电脑陷入瘫痪。C语言写出一个功能,整个编写过程需要耗费大量的时间。但当时,UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能,但不妨碍它为更高级的语言诞生带来灵感。


1982年Guido(吉多·范罗苏姆,Guido van Rossum,Python之父)毕业后进入到CWI(荷兰国家数学与计算机科学研究中心)工作,并参与到ABC语言的开发。ABC语言是在NWO(荷兰科学研究组织)旗下CWI的Leo Grurts、Lambert Meertens、Steven Pemberton三人主导研发一种交互式、结构化高级语言,是专门为非专业程序员设计的。与当时的大部分语言不同,ABC语言的目标是“让用户感觉更好”,希望让语言变得容易阅读、容易使用、容易记忆、容易学习,并以此来激发人们学习编程的兴趣。历经十年发展,ABC语言还是以失败而告终。在当时,ABC语言编译器需要比较高配置的电脑才能运行。而这些电脑的使用者通常精通计算机,他们更多考虑程序的运行效率,而非它的学习难度。除了硬件上的困难外,ABC语言的设计也存在一些致命的问题:可拓展性差,ABC语言不是模块化语言,……。Guido对ABC语言失败的原因有清醒的认识,所以在他酝酿的新语言中都会扬长避短。


1989年的圣诞节期间,吉多·范罗苏姆(Guido van Rossum)在阿姆斯特丹有很多空闲时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。希望这种新语言,能够像C语言那样,可以全面调用计算机的功能接口,又能像shell那样,可以轻松的编程,还能像ABC语言那样通俗易懂。所以,Guido决定在继承ABC的基础上开发一个新的基于互联网社区的脚本解释程序。突然有一天,Guido在欣赏他喜爱的喜剧团体Monty Python演出时灵光一闪,这个新生的编程语言有了属于它的名字:Python。


1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。Python语法很多来自C,但又受到ABC语言的强烈影响。它具有很多优秀的脚本语言的特点:解释的,面向对象的,内建的高级数据结构,支持模块和包,支持多种平台,可扩展,……。


Python特点


我们还记得,ABC失败的一个重要原因是硬件的性能限制。从这方面说,Python要比ABC幸运许多。由于计算机性能的提高,软件的世界也开始随之改变。硬件足以满足许多个人电脑的需要。1990年代初,个人计算机开始进入普通家庭。Intel发布了486处理器,windows发布window 3.0开始的一系列视窗系统。程序员开始关注计算机的易用性,比如图形化界面。硬件厂商甚至渴望更多、更强大的应用软件问世以带动硬件的更新换代。C++和Java相继流行。C++和Java提供了面向对象的编程范式,以及丰富的对象库。在牺牲了一定的性能的代价下,C++和Java大大提高了程序的产量。语言的易用性被提到一个新的高度。Python的设计哲学是优雅、明确、简单、易于维护,这些都是得益于ABC语言的一些规定。Python有极其简单的语法,但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些其它语言的惯例,特别是C语言的惯例,比如回归等号赋值。Guido认为一门好的编程语言使程序员能够专注于解决问题而不是去搞明白语言本身。Python既支持像C语言一样面向过程的编程,也支持如C++、JAVA语言一样面向对象的编程。


另一个悄然发生的改变是Internet。1990年代还是个人电脑的时代,windows和Intel挟PC以令天下,盛极一时。尽管Internet为主体的信息革命尚未到来,但许多程序员以及资深计算机用户已经在频繁使用Intemet进行交流,比如使用Emall和Newsgroup等。Internet让信息交流成本大大下降。一种新的软件开发模式开始流行:开源。程序员利用业余时间进行软件开发,并开放源代码。1991年,Linus在comp.os.minix新闻组上发布了Linux内核源代码,吸引大批hacker的加入。Linux和GNU相互合作,最终构成了一个充满活力的开源平台。基于其开放源代码的特性,Python是Free/Libre and Open Source(FLOSS,自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读、使用和改动它的源代码或将其中一部分用于新的自由软件中。

Python已经被移植(也就是使其工作)到许多平台。Python可在Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2和android平台等平台上运行。只有稍微注意避免系统开发的特性,Python无需修改几乎可以在其他系统平台进行运行。


当硬件性能不是瓶颈,Python又容易使用,所以许多人开始转向Python。Guido维护了一个maillist,Python用户就通过邮件进行交流。Python用户来自许多领域,有不同的背景,对Python也有不同的需求。Python相当的开放,又容易拓展,所以当用户不满足于现有功能,很容易对Python进行拓展或改造。Python从一开始就特别在意可拓展性,提供丰富的API、模块和工具。Python可以在多个层次上拓展。从高层上,你可以直接引入.py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写.py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.S0文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。


随后,这些用户将改动发给Guido,并由Gu ido决定是否将新的特征加入到Python或者标准库中。如果代码能被纳入Python自身或者标准库,这将极大的荣誉。Guido van Rossum一直在亲力亲为地维护Python社区,Python的每一次改进提案(PEP)他都会亲自签署并确认,他因此被称为“终身的仁慈独裁者"。Python被称为"Battery Included”,是说它以及其标准库的功能强大。这些是整个社区的贡献。


Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。Python的开发者来自不同领域,他们将不同领域的优点带给Python。比如Python标准库中的正则表达是参考Perl,而lambda, map, filter, reduce等函数参考了Lisp。Python本身的一些功能以及大部分的标准库来自于社区。Python的社区不断扩大,进而拥有了自己的newsgroup,网站,以及基金。除了标准库以外,还有许多其他高质量第三方库,如Teoro PTorch Pchatrs Kens Tised和OpunCV图像库等。在基础库上面的基础进行开放,避免重复造轮子。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员。


最初的Python完全由Guido本人开发。Python得到Guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。Guido和一些同事构成Python的核心团队。他们将自己大部分的业余时间用于hack Python。随后,Python拓展到研究所之外。1994年末,美国国家标准与技术研究院(NIST)赞助下,第一次Python研讨会在国家统计局的办公室举行了,van Rossum、Barry Warsaw以及其他早期Python爱好者聚集在一起,讨论他们正在用Python做什么,以及对这种语言未来发展的希望。Python开始流行,从Python 2.0开始,Python也从maillist的开发方式,转为完全开源的开发方式。社区气氛已经形成,工作被整个社区分担,Python也获得了更加高速的发展。到今天,Python的框架已经确立。Python语言以对象为核心组织代码,支持多种编程范式,采用动态类型,自动进行内存回收。Python支持解释运行,并能调用C库进行拓展,……。


Python的版本历程


1. Python 1.0-2.7

1991年,Guido van Rossum发布了Python的第一个版本,Python 0.9.0。在1994年,Python 1.0版本面世,这是Python的第一个正式版本。此后,Python的版本发展非常快速。


2000年,Python 2.0发布,增加了一些新的功能,并删除了一些旧的功能。Python 2.0也是第一个被广泛使用的Python版本之一。从那以后,Python 2.x系列版本维持了约一个十年的时间,一直持续到2010年。


Python 2.7版本是该系列最后一个稳定版本,它在2010年7月发布。它包含了一个已知的特性集,并一直到2020年年初,即在Python 2的官方支持结束之前,仍然得到了广泛的支持。


2. Python 3.x

Python 3.0于2008年12月发布,它在语法、内存管理、Unicode支持等方面都有了重大改进,但这也导致了它与Python 2.x不兼容。Python 3.x改进了一些常见的问题,并增加了一些新功能。


从发布以来,Python 3.x保持了快速和稳定的发展,并已广泛应用于各种领域。Python 3.8是当前的稳定版本,它于2019年10月发布。


Python之父Guido van Rossum


Python的作者,吉多·范罗苏姆(Guido van Rossum)于1956年1月31日出生在荷兰的斯海尔托亨博斯(Schaerbeek),这是一个位于布鲁塞尔附近的小城市。吉多·范罗苏姆的个人网站上写道:“我出生在荷兰一个普通工人家庭,我的父母是一名砖瓦工和一名护士。”这也是吉多·范罗苏姆经常强调的一个话题,他认为一个人的家庭背景并不影响他的成功和成就。

1982年从阿姆斯特丹大学获得了数学和计算机硕士学位。所以他可以称得上是一名数学家,或者更确切点是精通数学与计算机的复合型人才。他的职业生涯始于荷兰的CWI(国家数学和计算机科学研究学会)研究所,那里是欧洲计算机科学研究的中心之一。

1989年开始,Guido就一直是Python的决策者以及主力开发者。

1991年,Guido通过alt.sources新闻组向世界发布了Python。

1994年,Python引起了Michael McLay的注意,他当时美国国家标准局(NBS,现在是NIST,美国国家标准与技术研究所)担任高级职位。为了向局内的其他人推销Python,McLay邀请当时还在荷兰CWI工作的van Rossum到NIST做两个月的客座研究员。这个职位后来被证明是Python未来发展的催化剂,也是van Rossum人生中的一个重大变化。

1995年Guido从荷兰移居至美国。在美国期间,他先后在马里兰州国家标准及技术研究所(NIST),和弗吉尼亚州Reston国家创新研究公司(CNRI)工作。加入CNRI后,van Rossum领导了一个小型开发团队,致力于开发名为Knowbot的程序,该软件被称为移动代理,设计用来运行跨分布式计算机系统,比如互联网。这个团队使用Python工作,加入van Rossum的还有Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer和Fred Drake,他们都将在Python社区中发挥重要作用。

2002年,获得由自由软件基金会颁发的2001年自由软件进步奖。

2003年5月,获得荷兰UNIX用户小组奖。

2005年开始,Guido加入谷歌。在那里,他开发了内部代码审查工具Mondrian,并在谷歌App Engine项目工作。还用 Python 语言为 Google 写了面向网页的代码浏览工具。

2006年,被美国计算机协会(ACM)认定为著名工程师。

2013年,他加入了以Python建立主要架构的云服务提供商Dropbox,开发了Mypy,目前最流行的Python静态类型检查器之一。

2019年10月,Guido宣布退休。

2018 年 7 月,Guido 退出 Python 核心决策层,转到幕后,「Python 之父」退休了,Python 交由其他 Core Developers 继续维护。

退休后,Guido回归Python开发者社区,只不过,他不再是“仁慈的独裁者(BDFL)”了,只作为社区的一名核心贡献者。

2020年11月12日, 64岁的Python之父Guido van Rossum在自己的官方宣布:由于退休生活太无聊,自己决定加入Microsoft 的 DevDiv Team。


Python未来需要完善之处


Python的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因。缺少大厂鼎立支持,Python的自由也是它的短板。

与其它主流编程语言相比,Python应用范围还是非常狭窄,(截止2023年1月)主要优势在于数据分析、AI、算法领域(但,对学历要求高,起码研究生起步)。所以,Python有2个极端:因为难度低外行小白学上手快,研究生学它进入算法、大数据、人工智能领域。

GIL锁限制并发,不能进行多线程cpu利用,一个Python解释器进程因为GIL的存在,禁止了多条用户执行线程。

首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。Python最初的设计理念在于,为了解决多线程之间数据完整性和状态同步的问题,设计为在任意时刻只有一个线程在解释器中运行。那么为什么不抛弃GIL呢?许多人也许不知道,在1999年,针对Python 1.5,一个经常被提到但却不怎么理解的"free threading"补丁已经尝试实现了这个想法,该补丁来自Greg Stein。在这个补丁中,GIL被完全的移除,且用细粒度的锁来代替。然而,GIL的移除给单线程程序的执行速度带来了一定的代价。

现代处理器芯片的核心数量在不断增长(英特尔最新的处理器核数已经达到了 48 个),Warsaw 也希望 Python 能够更好地让任务运行在多个处理器核心上。

Python 还不支持在非 x86 硬件平台上编译代码,Python 的测试套件很容易在移动和 Web 平台上崩溃,Python 应用程序的体积太大,在 Android、Windows 和 Web 平台上开发 GUI 代码时需要使用 asyncio 库,而这需要做额外的工作,标准库中的很多模块与 CPython 之外的解释器不兼容。

如果项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现,而应选一个编译型语言。

另外在Python中,Python 2.x与Python 3.x不兼容。因为Python没有向后兼容,给所有的Python工程师带来了一定的烦恼。


微软与python


Python 通常被认为是世界上最流行的编程语言,尤其是在机器学习的背景下。然而,它的主要限制是性能,因为它需要高端技术,经常依赖显卡,不能像 JavaScript 一样在浏览器中运行,并且在移动设备上的功能有限。微软一直在投资 Faster Python 项目,该项目由 Python 的作者 Guido van Rossum 于 2021 年开始,在他被微软聘为杰出工程师。Van Rossum 的目标是使 Python 的敏捷性和速度提高一倍,而 CPython 的重要贡献者 Mark Shannon 提出了将 CPython 加速五倍的实施计划。CPython 是其他变体(例如 Anaconda)所基于的标准 Python 实现。虽然 Python 的成功归功于其庞大的包和框架生态系统,例如 NumPy 和 PyTorch,它们简化了数据分析,但绝大多数这些包都是用 C 编写的。Python 是一种解释型语言,而 C 和 C++ 是编译型的,因此CPython 依靠 C 来解释 Python 代码。

微软雇佣了包括 Van Rossum 在内的六名工程师来提高 CPython 的性能。在 Python 3.10 和 3.11 的几个部分中,团队的贡献导致了 10% 到 60% 的速度提升。Eric Snow 一直致力于子解释器,L Pereira 实现了 3.11 的新异常组和 except* 功能,Brandt Bucher 开发了结构模式匹配。


Python应用场景


Python语言广泛应用于科学计算、自然语言处理、图形图像处理、游戏开发、系统管理、WEB应用、Web安全等。许多大型网站就是用Python开发的,如YouTube、Instagram.很多大公司的应用,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量使用Python。Python受关注程度逐年上升。

人工智能:

包括机器学习、神经网络、深度学习等人工智能领域,Python是最方便快捷的主流编程语言。

数据科学:

Python拥有非常强大的数据科学工具,并被广泛应用于数据分析、大数据出来、数据挖掘、机器学习等方面。例如,常用的数据科学工具包括Numpy、Pandas、Scikit-learn等。

网络爬虫:

Python被广泛应用于网络爬虫,例如爬取网页内容、分析页面数据等。Python拥有很多优秀的网络框架,如Requests、Scrapy等。【有法律风险,不经过对方同意拿别人数据是违法的,已经有不少人进去了


Web开发:

Python拥有一些出色的Web框架,例如Django、Flask、Pyramid等,这些框架为Web开发提供了一些有力的工具。Web开发效率非常高。

自动化测试:

Python被广泛应用于自动化测试,例如自动化测试脚本的编写、测试结果的分析等。Python拥有很多优秀的测试工具,如Pytest、unittest等。自动化测试主要包括Web自动化测试、APP自动化测试、接口自动化测试。

1.Web自动化测试当前市场上最主流的Web自动化测试工具就是Selenium,所以通过编写Python+Selenium脚本可以实现对Web项目的自动化测试。

2.当前市场上最主流的APP自动化测试工具就是Appium,所以通过编写Python+Appium脚本可以实现对APP项目的自动化测试。

3.用Python做性能测试。在做性能测试时一般都会使用工具实现,比如使用Loadrunner、JMeter等工具。但是通过编写Python代码同样也是可以实现性能测试的。Python语言中比较流行的性能测试框架是Locust,一个开源的性能测试工具,在代码中定义用户行为,支持分布式和可扩展,通过Web页面可以实时查看测试细节。

4.用Python开发小工具在实际的测试工作中经常需要处理一些测试数据,比如解析日志文件中数据,大批量生成操作数据库的sq|语句等需求。通过编写Python代码可以非常方便的实现数据的处理,并且Python中有大量的第三方库也可以帮助我们解决很多问题。


热点文章
更多

做调查找91调研

400-6644012
c716@139.com

扫码加微信

91调研为客户提供专业的调研服务:


一、我们的调研产品:

1、满意度测评:顾客、员工、供应商、公共服务居民满意度测评,满意度短板提升等。
2、渠道管控:神秘顾客暗访,明访,店检、巡检,顾客体验、服务质量提升,飞单检查,侵权取证,乱价监测等。
3、用户洞察:市场机会识别,策略U&A,品牌定位研究,需求挖掘、产品创意,概念测试及优化,价格测试,新产品上市前定位研究,产品上市后评估,渠道诊断,广告和传播效果评估,品牌健康度追踪等。


二、我们的调查形式:

面访(流动街访、定点拦截),入户,普查,座谈会,深访,产品留置,口味测试,电话调查,民族志,在线网络调研(pannal社区),目标人群招募,数据分析等;

我们致力于成为您的一站式调研服务供应商!
电话:400-6644012,15110043005
邮箱:c716@139.com