第1章 Python概述 Chapter1 Python是一种解释型、跨平台、面向对象的计算机程序设计语言,具有开源性、易学 性、可移植性、可扩展性和支持丰富类库等特点。Python凭借扩展性强、第三方库丰富和 免费开源等特点,在机器学习、数据挖掘、人工智能等领域有着很大优势,前景非常值得 期待。 1.1 Python语言简介 目前,Python是一种知名度高、影响力大、应用广泛的主流编程语言。 1.1.1 Python 的诞生 Python语言是荷兰首都阿姆斯特丹(Amsterdam)的多·范·罗苏姆(Guidovan Rosum)开发的。他出生于1956年1月31日,1982年他在阿姆斯特丹大学获得数学和 计算机科学硕士学位。1989年12月圣诞节期间,33岁的他在阿姆斯特丹为了打发圣诞 节的无趣,决心开发一个新的脚本解释程序。之所以选中Python(大蟒蛇)作为该编程语 言的名字,是取自英国20世纪70年代首播的电视喜剧片《蒙提· 派森的飞行马戏团》 (MontyPython..sFlyingCircus)。他希望这个新的叫作Python的语言,能实现他的理 念,即开发一种介于C和Shel 之间,功能全面、易学易用并可拓展的语言。他用3个月 的时间做出原型。1991年,第一个Python编译器(同时也是解释器)诞生,它是用C语言 实现的,并能够调用C库(o文件)。Pytocas)、fnton)、 shn最初就具有类(l函数(uci异常 处理(ecpto包括列ls和词典(itoay) 并包括模块 xein), 表((.) it) dcinr在内的核心数据类型, (module)为基础的拓展系统。 最初的Python完全由Guido一人开发。后来Python得到Guido同事的欢迎,他们 也参与进来对Python加以改进。Guido和同事组成了Python的核心团队。Python将 许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python 程序员可以有更多的时间用于思考程序的逻辑,而不是具体的实现细节。 后来罗苏姆在多个研究机构工作,这些机构包括在荷兰阿姆斯特丹的国家数学和计 算机科学研究学会(CWI),在马里兰州Gaithersburg的国家标准及技术研究所(NIST), 以及维珍尼亚洲Reston的国家创新研究公司(CNRI )。 2 2005 年12 月,Guido加入Google。他用Python语言为Google写了面向网页的代 码浏览工具。 2002 年,在比利时布鲁塞尔举办的自由及开源软件开发者欧洲会议上,Guido获得 了由自由软件基金会颁发的2001 年自由软件进步奖。2003 年5月,Guido获得了荷兰 UNIX 用户小组奖。2006 年,他被美国计算机协会(ACM)认定为著名工程师。 2011 年1月,Python被TIOBE 编程语言排行榜评为2010 年度语言。自从2004 年 以后,Python的使用率呈线性增长。目前Python已经成为最受欢迎的计算机语言之一。 2019 年10 月30 日,63 岁的Guido宣布退休。 1.1.2 Python 的优缺点 1.Python的优点 (1)Python的定位是“优雅”“明确”“简单”,所以Python程序看上去简单易懂,初学 者学Python不但入门容易,而且深入学习后可以编写非常复杂的程序。 (2)开发效率非常高。Python有非常强大的第三方库,基本上想通过计算机实现的 各种功能在Python官方库里都能找到。开发项目时直接下载并调用一些库文件,然后 在基础库的基础上再进行编程,从而大幅缩短了开发周期,避免了重复性劳动。 (3)Python是面向对象的高级语言,支持将代码封装在对象中的编程技术。 (4)Python是解释型语言,在开发过程中没有编译环节。 (5)Python是交互式语言,可以在Python提示符后直接互动执行代码。 (6)免费、开源是Python被广泛使用的原因之一,程序员可以免费使用许多程序,而 不存在版权问题。 Py (7)基于其开放源代码的特性,thon已经被移植(也就是使其工作)到许多平台。 (8)有较好的可扩展性。如果需要一段运行很快的关键代码,或者是想要编写一些 不愿开放的算法,可以使用C或C++完成那部分程序,然后在Python程序中调用。 (9)Python提供所有主要商业数据库的接口。 (10)Python支持GUI(graphicaluserinterface,图形用户界面), 可以创建并移植到 许多系统中进行调用。 2.Python的缺点 (1)代码不能加密。因为Python是解释型语言,它的源代码都是以明文形式存放的 (不过这也许不能算是一个缺点)。 (2)对多线程支持度不高。 (3)速度慢。Python相对C语言要慢得多,但大多数用户是感觉不到的。 (4)Python作为解释型动态语言,通常需要程序员自查代码安全。而Java和C等静 态类型语言,这些问题会在编译时检查出来。 (5)缺少其他高级语言具备的一些功能。为了增加相关功能,Python通过变通的方 式实现,从而导致代码变得复杂。 3 (6)由于Python是由许多业余人士逐渐丰富并完善的语言,相对Java、C#等语言, 缺乏整体设计,造成规范繁杂、混乱。 1.1.3 Python 的应用领域 (1)系统编程。Python提供API(applicationprograminterface,应用程序接口),能 方便地进行系统维护和管理,很多系统管理员认为它是理想的编程工具。 (2)图形界面开发。Python在图形界面开发方面很强大,可以用Tkinter/PyQT框 架开发各种桌面软件。 (3)科学计算。Python是一门很适合做科学计算的编程语言。随着NumPy、SciPy、 Matplotlib、Enthoughtlibrarys等众多程序库的开发,使Python越来越适合做科学计算 并绘制高质量的二维和三维图像。 (4)文本处理。Python提供的re模块支持正则表达式,还提供SGML 、XML分析模 块,许多程序员利用Python进行XML程序的开发。 (5)数据库编程。可通过PythonDB-API(数据库应用程序接口)规范的模块与 MicrosoftSQLServer、Oracle、Sybase、DB2 、MySQL 、SQLite等数据库通信。另外, Python自带一个Gadfly模块,提供了一个完整的SQL环境。 (6)网络编程。Python提供丰富的模块支持Socket编程,能方便快速地开发分布式 应用程序。 (7)Web开发。Python拥有很多免费函数库、免费Web网页模板系统,以及与Web 服务器进行交互的库,可以实现Web开发,搭建Web框架。 (8)自动化运维。Python是运维人员广泛使用的语言,能满足绝大部分自动化运维 需求,包括前端和后端。 (9)金融分析。利用Numpy 、Pandas、Scipy等数据分析模块,可快速完成金融分析 工作。目前,Python是金融分析、量化交易领域使用最多的语言。 (10)多媒体应用。Python的PyOpenGL模块封装了“OpenGL应用程序编程接 口”,能进行二维和三维图像处理。 (11)网络爬虫。在爬虫领域,Python几乎处于霸主地位,提供了Scrapy 、Request、 BeautifulSoap、urlib等工具库,将网络中的一切数据作为资源,通过自动化程序进行有针 对性的数据采集以及处理。 (12)游戏开发。Python在网络游戏开发中也有很多应用。Python非常适合编写超 过1万行代码的项目,而且能够很好地把网游项目的规模控制在10万行代码以内。 (13)人工智能。NASA和Google早期大量使用Python,为Python积累了丰富的 科学运算库。当AI(artificialinteligence,人工智能)时代来临后,Python从众多编程语 言中脱颖而出,各种AI算法都基于Python编写。在神经网络、深度学习方面,Python都 能够找到比较成熟的程序包来加以调用。另外,Python是面向对象的动态语言,适用于 科学计算,使其在人工智能方面备受青睐。 4 1.1.4 Python 发展历史 1989年,Guido开始编写Python语言的编译器,他希望这个叫作Python的语言能 符合他的理想。 1991年,第一个Python编译器诞生。它是用C语言来实现的,并能够调用C语言的 库文件。Python从一出现便具有类、函数、异常处理等功能,包含表和词典在内的核心数 据类型,以及以模块为基础的拓展系统。 Python3相对Python早期的版本是一个较大的升级。Python3在设计的时候没有 考虑向下兼容,所以很多早期版本的Python程序无法在Python3上运行。 Pythn2.x系列的最后一个版本, 不再增加新功能, o7是2.已经停止开发, 2020年终 止支持。对所有最新标准库的更新改进,只会在3.thon3比Python2 x的版本里出现。Py 更规范统一,去掉了一些不必要的关键字,且Pyx还在持续改进,所以推荐读者使 thon3. thon3.用Py 据2020 x 年 。 4月TIOBE公布的编程语言排行榜看,前5位的是Jaa(73% )、 72% )、31% )、78% )、 v16. C(16.to9.+(C#(74%),括号中的百分数是使用占比。 Pyhn(C+6.4. 2. 1 安装与配置 hoPty n程序开发环境 1.2.1 IDLE 的下载与安装 hn程序的基本集成开发环境( IDLE是开发PytoIDE),具备基本IDE的功能。IDLE 可以被看作是简易版的集成开发环境,是学习Python不错的选择。下面介绍Windows 下IDLE的安装。 o//www.too (1)在浏览器地址栏中输入Pythn官网的下载地址htps:pyhn.rg/ downloads/,显示下载网页,如图1-1所示。由于网页经常改变,大家看到的网页可能不 同。单击“Dlato8.”将Pyhn安装文件下载到指定的文件夹中。 ownodPyhn3.3, to (2)单击“运行”按钮,打开“打开文件-安全警告”对话框,单击“运行”按钮。 (3)显示Pyto如图12所示, AddPyhn3.oPATH” hn安装向导,-选中“to8t复选框, 会自动配置环境变量。InstalNow是默认安装选项,Customizeinstalation是安装时自 定义安装的文件。选择InstalNow的安装路径为C:\Users\Administrator\AppData\ Local\Programs\Python\Python38-32,这个安装路径在安装其他模块时不容易出错;再 单击InstalNow 。 (4)显示SetupProgres 对话框,如图1-3所示。安装过程需要几分钟。 (5)显示Setupwassucesful对话框,如图1-4所示,表示安装完成。单击Close按 钮,关闭安装向导对话框。 5 图1- 1 选择要下载的版本 图1- 2 安装向导对话框 6 图1- 3 显示SetupProgres 对话框 图1- 4 Setupwassucesful对话框 1.2.2 Python 的菜单选择和启动 Python安装成功以后,在Windows的“开始”菜单 中展开“Pythn3.”文件夹,显示的菜单选项如图1-5 o8 所示。 1.IDLE(to832bt) Pyhn3.-i 用“IDLE(Pyto832-bt)”选项可以打开图1- 5 “开始”菜单中的“to8” hn3.iPyhn3. Python自带的集成开发环境,它是一个PythonShel 文件夹 7 程序。Shell是“外壳”的意思,是一个通过输入文本与系统进行交互的程序。 单击IDLE(Python3.832-bit)选项,显示如图1-6所示的窗口。可以在IDLE 的 “> > >”提示符后输入Python指令,也可以创建Python程序文件。对于初学者,学习 Python通常使用这个IDLE窗口。稍后将介绍该IDLE的使用方法。 图1-6 Python的IDLE窗口 2.Python3.8(32-bit) 单击Python3.8(32-bit)选项,可以打开Python命令行窗口,如图1-7所示。可以在 “> > >”提示符后输入Python命令。 图1-7 命令行窗口 8 3.Pyto8Mauls(-it) hn3.na32b 单击Pythn3.nas(32bt)选项,可以打开Pyton帮助文档,显示如图18所 o8Maul-ih 示的窗口。 图1- 8 Python帮助文档 如果希望查看中文帮助文档,请在浏览器地址栏中输入htps://dospytoog/ zh-cn/3/,显示的内容如图1-9所示。 c.hn.r 图1- 9 Python的在线中文帮助文档 9 4.Python3.8ModuleDocs(32-bit) 单击Python3.8ModuleDocs(32-bit)选项,将以内置服务器的方式打开Python的 模块文档,显示如图1-10所示的窗口。 图1-10 Python的模块文档 1.2.3 在IDLE 中编辑、运行程序 IDLE的基本功能有语法加亮、段落缩进、基本文本编辑、Tab键控制、调试程序等, 可以方便地创建、运行、调试Python程序。下面介绍PythonIDLE的基本用法。 IDLE启动后的初始窗口中,窗口标题栏显示“Python3.8.4Shell”,通过它可以在 IDLE内部执行Python命令。除此之外,IDLE 带有一个交互式解释器,用来解释执行 Python语句;有一个编辑器,用来编辑Python程序(或者脚本);有一个调试器,用来调试 Python程序脚本。 IDLE(Python3.832-bit)是以GUI及菜单方式来执行Python命令。对于喜欢以命 令行方式来执行命令的程序员,可以启动Python3.8(32-bit)。 IDLE和Python命令行两种窗口中都以3个大于号“> > >”作为提示符,可以在该提 示符后输入命令或语句。在交互方式下,在这两种窗口中执行命令的方式是一样的。本 书使用IDLE环境来介绍Python程序的编程。 提示:本书约定,在所有章节给出的示例代码中,“> > >”符号都不需要输入,仅表示 该代码是在交互方式下运行;而不带该提示符的代码则表示是以程序的方式运行。 1.交互方式运行命令 如果使用交互式编程模式,直接在提示符“> > >”后输入相应的命令或语句,并按Enter 10 键。如果正确执行了命令,在下一行将显示运行结果;否则将抛出异常,给出错误提示。 下面采用交互方式输入简单的语句,计算两个变量相加的值,输出内容显示在提示符 下方。在 “> > >”提示符后输入x=20,按Enter键;在下一行的“> > >”后输入y=30,按 Enter键;在新的下一行的“> > >”后输入x*y,按Enter键,则下一行显示x*y的计算结 果600。 在“> > >”后输入"Hello,world!",按Enter键,则在下一行显示“Hello,world!”。 在“> > >”后输入“2/0”,则给出错误提示,如图1-11所示。 图1-11 交互方式的运行 在交互方式下,在提示符“> > >”后输入相应的命令或语句,并按Enter键,就能显示 结果,非常简单。但是输入的命令和语句不能重复利用(可以选中语句后,按Ctrl+C组 合键复制,然后在最下面一行的“> > >”后按Ctrl+V 组合键粘贴),也不能保存到硬盘等 外存上。因此,交互方式仅仅用于执行最简单的代码,很少用于程序的输入和运行。 2.程序方式运行 把Python语句、命令等程序代码按照一定的业务逻辑编写成程序,并以文件的形式 保存到硬盘等外存中,这样的程序文件可以重复调用和编辑。在下面的例题中,介绍在 IDLE中如何进行程序的新建、输入、编辑、保存和运行。 【例1-1】 编写第一个程序,输出“Hello,world!”。 #Filename: helloworld.py print("Hello, World!") x=20 y=30 z=x*y+100 print(z)