购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 认识Python语言

从程序设计语言的发展过程来分,计算机程序设计语言可分为:机器语言、汇编语言和高级语言。Python是一门高级语言。

Python语言具有优雅的语法,高效率的数据结构,属于纯粹的开源自由软件,相对其他语言(比如Java),具有语法简洁、易于学习、功能强大、可扩展性强、跨平台等诸多特点。

Python也是一种扩充性强大的编程语言。它具有丰富和强大的库,能够把使用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。所以Python常被称为“胶水”语言。

1.1.1 Python的发展历程

在1989年,Python的创始人Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种升级(ABC是由Guido参加设计的一种教学语言)。就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并不成功,究其原因,Guido认为是其非开放造成的。Guido决心在Python中避免这一错误。

之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为Guido是一个名叫Monty Python的喜剧团体的爱好者。就这样,Python在Guido手中诞生了。

Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,Python的使用率呈线性增长。2020年8月,TIOBE公布的编程语言指数排行榜上,Python跃居第三。作为人工智能的主要编程语言,从2016年开始,Python的使用比例不断提升,目前能够达到9.69%,如图1-1所示。

要详细了解Python的现状,可以访问Python官方网站:http://www.python.org。

1.1.2 Python的特点

Python具有以下特点。

图1-1 2020年8月TIOBE公布的编程语言指数排行榜

1.简单易学

Python的设计哲学是“优雅”“明确”“简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。由于Python语言的简洁性、易读性以及可扩展性,在国内外使用Python来教授程序设计课程的学校越来越多。

2.功能强大(可扩展、可嵌入)

Python既属于脚本语言,也属于高级程序设计语言,所以,Python既具有脚本语言(如Perl、Tcl和Scheme等)的简单、易用的特点,也具有高级程序设计语言(如C、C++和Java等)的强大功能。Python具有的一些强大功能如下。

● 动态数据类型:Python在代码运行过程中跟踪变量的数据类型,不需要在代码中声明变量的类型,也不要求在使用之前对变量进行类型声明。

● 自动内存管理:良好的内存管理机制意味着程序运行具有更高的性能。Python程序员无须关心内存的使用和管理,Python会自动分配和回收内存。

● 大型程序支持:通过子模块、类和异常等工具,Python可应用于大型程序开发。

● 内置数据结构:Python提供了常用数据结构支持。例如,列表、字符串等都属于Python内置对象。同时,Python也实现了各种数据结构的标准操作,如合并、分片、排序和映射等。

● 内置库:Python提供丰富的标准库,从正则表达式匹配到网络编程等,使Python可以实现多种应用。

● 第三方工具集成:Python很容易集成第三方工具,通过各种扩展包将其应用到各种不同领域。

● 可扩展性和可嵌入性:Python提供了支持C/C++的接口,可以方便地使用C/C++来扩展Python。Python提供了API,通过使用API函数可以编写Python扩展。

3.具有良好的跨平台特性(可移植)

Python是用ANSI C实现的。C语言因为跨平台和良好的可移植性成为经典的程序设计语言。这意味着Python也具有良好的跨平台特性,可在目前所有的主流平台上编译和运行。所以,既可以在Windows下编写Python程序,也可以轻松地在Linux等各种其他系统中编写和运行Python程序。

4.面向对象

面向对象(Object Oriented,OO)是现代高级程序设计语言的一个重要特征。多态、运算符重载、继承和多重继承等面向对象编程(Object Oriented Programming,OOP)的主要特征也在Python的类模块中得到了很好的支持。由于Python简洁的语法和数据类型系统,Python中的OOP也变得极为简单。

5.Python是免费的开源自由软件

Python遵循GPL协议,是免费的开源自由软件,不管是用于个人还是商业用途,开发人员都无须支付任何费用,也不用担心版权问题。作为开源软件,程序员可以获得Python源代码,以研究其内部细节,并可加以修改使其针对目标更加适用。也可以将Python嵌入系统或随产品一起发布。

1.1.3 Python的应用领域

作为一门优秀的程序设计语言,Python被广泛应用于各种领域,从简单的文字处理,到网站和游戏开发,再到数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域,都能见到Python的身影。目前业内几乎所有大中型互联网企业都在使用Python,如Google、百度、腾讯、汽车之家、美团等。互联网公司将Python广泛用于自动化运维、自动化测试、大数据分析、爬虫、Web开发等领域。Python的应用领域简要说明如下。

● 系统编程:Python提供API(Application Programming Interface,应用程序编程接口),能方便地进行系统维护和管理,是很多系统管理员理想的编程工具。

● 图形处理:Python内置了Tkinter(Python默认的图形界面接口)和标准面向对象接口Tk GUI API,可以进行程序GUI设计。同时有PIL等图形库支持,使其能够方便地进行图形处理。

● 数据处理:Python的NumPy扩展库提供了大量标准数学库的接口,例如矩阵对象、标准数学库等。SciPy和Matplotlib扩展库也为Python提供了快速数组处理、数值运算以及绘图功能。众多的扩展库使Python十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

● 文本处理:Python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用Python进行XML程序的开发。

● 数据库编程:Python提供了对目前主流的数据库系统的支持,程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与MySQL、Oracle、Microsoft SQL Server、Sybase、DB2、SQLite等数据库通信。Python自带一个Gadfly模块,提供了一个完整的SQL环境。

● 网络编程:Python提供了标准的Internet模块,使Python能够轻松实现网络编程,例如,通过套接字(Socket)进行网络通信。

● Web编程:Python支持许多Web开发工具包,支持最新的XML技术。使得Python能够快速构建功能完善和高质量的网站。很多大规模软件开发计划,例如Zope,Mnet,BitTorrent及Google都在广泛地使用它。

● 多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

● Python广泛应用于游戏开发、人工智能、数据分析等领域。

1.1.4 Python的版本

Python发展到现在,经历了多个版本。截至本书成稿时,Python最新版本为3.8。需要注意的是,Python 3.x不再兼容现有的2.x程序。可根据实际需要选择使用的版本,当然,选择较新的版本有利于以后软件升级。

作为一个开源软件,Python拥有一个参与者众多的开发社区,它保持Python的不断更新和改进。Python的开发者通过一个在线的源代码控制系统协同工作,所有对Python的修改必须遵循PEP(Python Enhancement Proposal,Python改进提案),并通过Python扩展回归测试系统的测试。目前,由一个非正式的组织PSF(Python Software Foundation,Python软件基金)负责组织会议并处理Python的知识产权问题。

Python 3.x与2.x的主要区别如下。

1.Python 3.x默认使用UTF-8编码

Python 3.x源代码中的字符默认使用UTF-8编码,可以很好地支持中文或其他非英文字符。例如,在Python 3.x中可使用汉字作为变量名;在Python 2.x中不能使用汉字作为变量名,否则会出错。

2.print函数代替了print语句

在Python 3.x中,调用print函数来输出数据;在Python 2.x中则使用print语句。

3.完全面向对象

在Python 2.x中的各种数据类型,在3.x中全面升级为类(Class)。例如,在Python 2.x中输出int数据类型:print int的结果是﹤type‘int’﹥,在Python 3.x中输出int数据类型:print(int)的结果是﹤class'int'﹥。

4.用视图和迭代器代替了列表

常用方法或函数在Python 2.x中返回列表,在3.x中有很多改变。

在3.x中,字典的keys()、items()和values()方法用返回视图代替了列表,不再支持2.x中的iterkeys()、iteritems()和itervalues();在3.x中,map、filter和zip函数用返回迭代器代替了列表。

5.比较运算中的改变

比较运算的主要改变如下。

● 用!=代替了﹤﹥。

● 比较运算﹤、﹤=、﹥=和﹥在无法比较两个数据大小顺序时,会产生TypeError异常。

● 在Python 2.x中,1﹤”、0﹥None、len﹤=len等运算返回False,而在3.x中则产生TypeError异常。

● 在==和!=中,不兼容类型的数据视为不相等。

6.整数类型的改变

整数类型的主要改变如下。

● 取消了long类型,整数类型只有int一种。不再支持用后缀l或L表示长整数。

● 在Python 3.x中,/(除法)运算返回浮点数(float类型)。2.x中两个整数的/运算返回整数(截断了小数部分)。

● 整数不再限制大小,删除sys模块中的maxint(最大整数)常量。

● 不再支持以数字0开头的八进制常量(如012),而改成用前缀“0o”表示(如0o12)。

7.字符串的改变

在Python 2.x中,字符串中的字符默认为单字节(8位),字符串的类型可分为str和unicode两种。带前缀“u”或“U”的字符串为unicode类型,其他的字符(包含带前缀“b”“B”,“r”或“R”的字符串)为str类型。所有的字符串在输出时会将包含的字符直接输出。

在Python 3.x中,字符默认为unicode字符,即双字节字符。字符串的数据类型分为str和bytes两种。仍可使用字符串前缀“u”或“U”,但会被忽略。

在Python 3.x中,字符串前缀“b”或“B”表示二进制字符串,其类型为bytes。

8.取消了file数据类型

Python 3.x取消了2.x中的file数据类型。使用open函数打开文件时,返回的是IOTextWrapper类的实例对象。

Python 2.x的open函数返回的是file类型的对象。

9.异常处理的改变

在Python 3.x中,异常处理的改变主要如下。

● 所有异常都从BaseException继承,并删除了StandardError异常。

● 取消了异常类的序列行为和.message属性。

● 用raise Exception(args)代替raise Exception,args语法。

● 捕获异常的语法改变,引入了as关键字。

10.其他主要的语法改变

其他主要的语法改变如下。

● 加入了关键字“as”和“with”。

● 增加了常量“True”“False”和“None”。

● 加入nonlocal语句。使用nonlocal x声明x为函数外部的变量。

● 删除了raw_input()方法。用input函数代替。

● 去除元组参数解包。不能像def(a,(b,c)):pass这样定义函数了。

● 增加了二进制数,如'0b111'。bin函数可返回整数的二进制字符串。

● 扩展了可迭代解包。在Python 3.x里,“a,b,*x=seq”和“*x,a=seq”都是合法的,只要求两点“x”是list。

● 对象和“seq”是可迭代的。

● 面向对象引入了抽象基类。

● 类的迭代器方法next()改名为__next__(),并增加内置函数next,用以调用迭代器的__next__()方法。 sxY2oH/+lb9fEg6oJgeiGhgrigAHtQ/tfslkZul8r01T0mVMm2PnTfGC9K3MisCb

点击中间区域
呼出菜单
上一章
目录
下一章
×