Python是一种高级程序设计语言,用接近人类语言的方式描述计算的过程。例如,计算1加2的结果并将结果打印输出,使用Python完成这项功能,编写的Python程序内容如下:
print(+)这个Python程序首先计算1+2,然后使用print的功能将1+2的结果输出到屏幕,输出结果为:
3从这个程序可以直观的感受到Python的简单易学,即使没有编程基础,也能看懂和理解这段程序。
在介绍Python语言时,通常会提到Python是一门易学的编程语言,易学是Python最鲜明的特色。相对于C、C++、Java等编程语言,Python的易学体现在它的学习曲线非常的平缓,如果学习曲线如果太陡峭,显然不适合一般人去学习掌握,大部分人没入门就放弃了。
今年11月15日,年过半百的SOHO中国董事长潘石屹在微博上宣布,正式开始学习Python,占据了热搜榜,表明了Python语言的简单易学已经深入人心。
程序设计语言被分类为高级语言和低级语言:使用低级语言编写程序时,程序员需要考虑底层硬件细节,例如:手工的分配和释放内存,程序编写时繁琐易错;而使用高级语言编写程序时,高级语言会自动的处理底层硬件细节,例如:自动的释放不再使用的内存,程序员不用考虑底层硬件细节,专注于解决问题本身。
Python是一种典型的高级语言,向程序员屏蔽了底层硬件细节。例如,Python程序既可以在x86处理器上运行,也可以在arm处理器上运行,程序员不需要了解x86处理器和arm处理器的指令,就可以完成计算1加2这样的任务。
Python语法接近自然语言,提供了很多简洁、直观和易于理解的表达方式,非常适用来描述求解问题的逻辑。实现相同程序功能时,Python语言的代码行数仅相当于其他语言的1/5至1/10。更少的代码行数、更简洁的表达方式可减少程序错误以及缩短开发周期。
Python语言可以将复杂的功能封装为模块(又称为库),将功能实现的细节隐藏起来,使用该模块(库)的程序员不需要了解实现的细节。通过调用模块封装好的功能,可以用仅仅几行Python代码实现某项复杂的功能,例如可以用一行代码就实现一个Web服务器。
在Python的应用领域中,如:web开发、人工智能、网络爬虫、数据分析等领域,已经存在了大量的模块,程序使用这些模块就可以轻松开发出应用程序。
Python的标准库是随着Pyhon安装的时候默认自带的库,提供了有文本处理、系统管理、网络处理等功能。Python的第三方库,是由各家厂商和Python爱好者开发的库,第三方库需要下载后安装到Python的安装目录下。强大的标准库和第三方库,让Python程序员能够轻松实现各种复杂的功能。
和C、C++等编程语言相比,Python程序的运行性能很差,这是Python语言最主要的缺点。例如,编写一个以数学计算为主的程序,完成相同功能的Python程序的运行性能只有C程序的千分之一左右。
在实际的应用场景中,Python的缺点并不会成为系统的瓶颈,原因如下:
Python的NumPy(NumericalPython)库,是一个针对矩阵运算的数学函数库,该库由Python语言和C语言混合开发而成:底层的数学运算功能由C语言实现,面向用户的接口使用Python语言实现。用户使用Python语言调用底层的C语言模块,从而兼顾了开发效率和运行效率。
Python的创始人为荷兰人GuidovanRossum。1982年,Guido从阿姆斯特丹大学(UniversityofAmsterdam)获得了数学和计算机硕士学位。
Python的创始人GuidovanRossum
在80年代,个人电脑的配置很低,比如早期的Macintosh,只有8MHz的cpu主频和128KB的RAM。为了增进程序的运行效率,程序语言也迫使程序员像计算机一样思考,以便能写出充分利用计算机性能的程序。
Shell的本质是调用命令来完成复杂的功能,它缺乏编程语言的若干重要特性。例如,Shell缺乏复杂的数据结构:列表、字典、结构体,因此不适用于实现复杂的功能。Guido希望有一种语言,这种语言能够像C语言那样,具备完整的编程语言特性,又可以像Shell那样,具有很高的开发效率。
1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的程序语言Python。Guido将Python(大蟒蛇)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(MontyPython’sFlyingCircus),因此Python语言的logo是一条蟒蛇。
Python语言的logo
1991年,第一个Python解释器诞生,它是用C语言实现的,又被称为cpython。Python从一开始就具有良好的可扩展性,可以用C语言编写模块,在Python程序中使用这些使用C语言开发的模块。
1999年,Guido向DARPA提交了一条名为“ComputerProgrammingforEverybody”的资金申请,并在后来说明了他对Python的目标:
这些想法中的基本都已经成为现实,Python已经成为一门流行的编程语言。
Python有两个主要的版本:Python2与Python3。Python3相对于Python2是一个重大的升级,Python3与Python2两者的语法不兼容。最近这几年Python3的使用率急剧上升,Python2将逐步退出舞台。因此,学习Python应该选择Python3。
2019年12月的TIOBE编程语言的排行榜
2017年10月,教育部考试中心发布《关于全国计算机等级考试体系调整的通知》,新增Python语言程序设计科目。2018年9月,举行了首考。Python编程语言作为一种国家标准进入了中国的考试认证体系,这是一个里程碑性质的事件,意味着Python语言在国内教育领域得到官方的正式认同,在部分高校,Python程序设计已经成为一门必修课程。无论是计算机专业的院系还是非计算机专业的院系,开设Python程序设计课程,已经成为一种趋势。
Python已经成为全国计算机等级考试二级科目
Python在国内工业界得到了广泛的应用和认可,并且Python的人才易于培养和招聘,国内的互联网的领头企业提供了大量的和Python的工作岗位,下图为腾讯发布的Python的工作岗位。
Python可以作为《程序设计语言》课程的教学语言,在教学领域得到了国际和国内知名高高校认可。以世界著名的麻省理工学院(MIT)为例,《计算机科学及编程导论》在MIT的课程编号是6.00.1,是MIT计算机科学及工程学院的经典课程。之前,课程一直使用Scheme作为教学语言,不过由于Python简单、易学等原因,近年来已经改用Python作为教学语言了。
在Web应用中,用户通过浏览器向服务器提交请求,服务器接收到请求后,对用户的请求进行处理,再将结果返回给用户。例如,使用baidu搜索引擎的过程如下:
在以上的3个步骤中,与用户交互的部分称之为前端,在服务器处理的用户请求的部分称为后端。Python提供了大量的模块和框架可以用于后端开发。有很多知名的网站后端采用了Python,例如,国内的豆瓣就是一个应用Python打造的非常成功的Web2.0站点。
网络爬虫,又被称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取网页的程序。网络爬虫把网站的网页下载到在本地,然后对下载的网页进行关键字提取和数据分析。例如,baidu搜索引擎使用到大量的网络爬虫,过程如下:
Python提供了大量的模块和框架可以用于网络爬虫。例如,Python提供了requests模块根据指定的url抓取网页。Python同时提供了网络爬虫框架,例如Scrapy,基于Scapy框架开发可以快速实现抓取web站点并从页面中提取结构化的数据。
一个互联网产品的生成一般经历的过程是:需求分析、研发部门开发、测试部门测试、运维部门部署发布以及长期的运行维护。运行维护的日程主要工作包括服务部署、服务监控等。运维的工作繁琐重复,即使最谨慎的人,也会犯错,尤其是面对着重复性工作。通过运维自动化工具来完成这样的工作,错误率将大大降低。
Python提供了各种自动化运维工具,能满足绝大部分自动化运维的需求,包括:
自动化测试,顾名思义是指自动完成测试工作。通过工具模拟人工的操作过程,并验证其结果,这样的测试过程,就是是自动化测试。自动化测试节约了批人力成本,让机器执行大量的重复繁琐的劳动。
Python提供了众多的自动化测试框架,可以实现:
数据分析是指对数据搜集、整理、分析,并依据数据做出评估和预测。现在是一个依靠数据竞争的时代,世界500强企业中,有90%以上都建立了数据分析部门。IBM、微软、Google等知名公司都积极投资数据业务,建立数据部门,培养数据分析团队。
人工智能(ArtificialIntelligence),英文缩写为AI,它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能的研究目标是使计算机能够胜任一些通常需要人类智能才能完成的复杂工作,例如:
Python语言的语法简洁、表达能力强,能简单快速聚焦问题本身而不是繁琐底层细节,成为了人工智能编程首选的编程语言。
阿里云的AI解决方案
阿里云提供了提供最易用的API、SDK等开发组件,助力企业快速高效的实现产品升级。对每项产品提供多种编程接口,包括:Python、Java、C++、ios、Android、Restful等。以语音合成为例,阿里云AI的语音合成PythonSDK提供了如下接口:
豆瓣网(douban)是一个社区网站,提供关于书籍、电影、音乐等作品的信息,还提供书影音推荐、线下同城活动、小组话题交流等多种服务功能。豆瓣网已经达拥有300万注册用户,访问量每天则超过两千万,是一个应用Python开发的非常成功的Web2.0站点。
豆瓣网的后端采用了Quixote框架,Quixote框架是一个使用Python开发的轻量级Web框架。
Idle是一个使用Python开发的集成开发环境IDE。Idle由Python官方开发和维护,在Windows操作系统中,安装Python时会同时安装Idle。IDLE提供了一个功能强大的调试器,它还提供了一个多窗口文本编辑器,具有许多功能,包括多个撤消,Python着色,智能缩进,调用提示,自动完成等。
Python内置的IDE
FaceRecognition是一个基于Python的人脸识别库,它还提供了一个命令行工具,让你通过命令行对任意文件夹中的图像进行人脸识别操作。该库使用顶尖的深度学习人脸识别技术构建,在脸部检测数据库上的检测准确率高达99.38%。FaceRecognition的最基本功能是从图像中识别人脸,如下图所示。
从图像中识别人脸
经过这个小节的学习,我们应该已经大致知道了Python到底是个什么样的编程语言。现如今,Python可以说在各个编程领域大放异彩,很多公司也已经开始大量招聘Python人才,所以你是很有必要学习Python的。后面的小节中我会一一把Python的各种魅力呈现给大家,快来一起愉快的学习吧。