Python基础编程与实践
上QQ阅读APP看书,第一时间看更新

1.1 了解Python

1.1.1 Python的由来

Python的创始人为Guido van Rossum,曾获得阿姆斯特丹大学数学和计算机双料硕士学位。Guido接触并使用过Pascal、C、Fortran等语言,但这些语言都不能让他感到满意。这些语言的基本设计原则是让机器运行得更快,这就要求程序员需要模仿计算机的思考模式来写出更符合机器口味的程序。这种编程方式让Guido感到苦恼,所以Guido尝试选择Shell,C语言中许多上百行的程序在Shell中只用几行就可以完成。然而,Shell的本质是调用命令,它不是一个真正的语言,无法全面调动计算机的功能。

随后,Guido在荷兰的数学和计算机研究所参与了ABC语言的开发,希望开发一种既能够像C语言一样全面调用计算机的功能接口,又可以像Shell一样轻松编程的语言。与当时大部分语言不同,ABC语言以教学为目的,目标是“让用户感觉更好”,希望通过ABC语言让语言变得更容易阅读、容易使用、容易记忆、容易学习,并以此激发人们学习编程的兴趣。ABC语言尽管已经具备了良好的可读性和易用性,但是由于其对计算机配置的高要求,导致其始终没有流行起来。除此之外,ABC语言不能直接操作文件系统,无法直接读写文件,输入输出的困难对于计算机语言来说是致命的。

1989年的圣诞假期,Guido开始写Python语言的编译器。Python这个名字来自于Guido所挚爱的电视剧——Monty Python’s Flying Circus。他希望创造一种介于C和Shell之间,功能全面、易学易用、可拓展的语言。1991年,第一个Python编译器诞生。该编译器是用C语言实现的,并且能够调用C语言的库文件。Python诞生时便具有类、函数、异常处理、包含表和词典在内的核心数据类型以及模块为基础的拓展系统[1]

最初,Python完全由Guido本人开发,后来逐渐受到Guido同事的欢迎,它们迅速反馈使用意见,并参与Python的改进。Guido和一些同事构成了Python的核心团队,他们将自己大部分业余时间用于hack Python,Python逐渐拓展到了研究所外。Python将许多机器层面的细节隐藏交给编译器处理,并凸显逻辑层面的编程思考,因此,程序员使用Python时可以将更多时间用于程序逻辑的思考,而不是具体细节的实现。这一特征吸引了广大程序员,使得Python越来越受到人们的关注。

1.1.2 Python的版本

Python自发布以来,主要有三个版本:1994年发布的Python1.0版本、2000年发布的Python2.0版本和2008年发布的Python3.0版本。

虽然目前使用Python2.x的开发者略多于使用Python3.x的开发者,但使用Python3.x在未来将是大势所趋。Python3.x在Python2.x的基础上做了功能升级,对Python2.x的标准库进行了一定程度的重新拆分和整合,比Python2.x更容易理解。特别是在字符编码方面,Python2.x对于中文字符串的支持性能不够好,需要编写单独的代码对中文进行处理,否则不能正确显示中文,而Python3.x成功解决了该问题。

此外,Python3.x和Python2.x的思想基本是共通的,只有少量的语法差别。学会了Python3.x,只要稍微花一点时间学习Python2.x的语法,就可以灵活运用这两个不同版本了。

本书使用的版本为Python3.6。

1.1.3 Python的应用领域

Python作为一种功能强大且通用的编程语言广受好评。它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。

1.数据分析与处理

通常情况下,Python被用来做数据分析。用C语言设计一些底层算法进而封装,然后用Python进行调用。因为算法模块较为固定,所以用Python直接进行调用,方便且灵活,可以根据数据分析与统计需要灵活使用。Python也是一个比较完善的数据分析生态系统,其中Matplotlib经常会被用来绘制数据图表,它是一个2D绘图工具,有着良好的跨平台交互特性。日常做描述统计用到的直方图、散点图、条形图等都会用到它,几行代码即可出图。人们日常看到的K线图、月线图也可用Matplotlib绘制。如果在证券行业做数据分析,Python是必不可少的。

再如Pandas也是Python在做数据分析时常用的数据分析包,也是很好用的开源工具。Pandas可对较为复杂的二维或三维数组进行计算,同时还可以处理关系型数据库中的数据,和R语言相比,data.frame计算的范围要远远小于Pandas中的DataFrame的范围,这也从另一个侧面说明Python的数据分析功能要强于R语言。

除以上两点之外,SciPy还可以解决很多科学计算的问题,比如微分方程、矩阵解析、概率分布等数学问题。

2.Web开发应用

Python是Web开发的主流语言,但不能说是最好的语言。同样是解释型语言的JavaScript,在Web开发中应用得已经较为广泛,原因是其有一套成熟的框架。但Python也具有独特的优势,比如Python相比于JS、PHP在语言层面较为完备,而且对于同一个开发需求能够提供多种方案。库的内容丰富,使用方便。Python在Web方面也有自己的框架,如django和flask等。可以说用Python开发的Web项目小而精,支持最新的XML技术,而且数据处理的功能较为强大。

3.人工智能应用

在人工智能的应用方面,笔者认为还是得益于Python强大而丰富的库以及数据分析能力。比如说在神经网络、深度学习方面,Python都能够找到比较成熟的库包来加以调用。而且Python是面向对象的动态语言,且适用于科学计算,这就使得Python在人工智能方面备受青睐。虽然人工智能程序不限于Python,但依旧为Python提供了大量的API,这也正是因为Python当中包含着较多的适用于人工智能的模块,比如sklearn模块等。调用方便、科学计算功能强大依旧是Python在AI领域最强大的竞争力。

4.游戏编程

Python在很早的时候就是一种游戏编程的辅助工具,在《星球大战》中扮演了重要的角色。在《深渊(The Abyss)》《星际迷航(Star Trek)》《夺宝奇兵(Indiana Jones)》等大片中担当特技和动画制作的工业光魔(Industrial Light)公司就采用Python制作商业动画。目前,通过Python完全可以编写出非常棒的游戏程序。

5.企业与政务应用

目前,Python已经成功实现企业级应用,全球已有很多公司采用Python进行企业级软件的开发和应用,比如:Enterprise Resource Planning(ERP,企业资源计划)和Customer Relationship Management(CRM,客户关系管理)这样的应用。同时,通过Python技术,人们成功实现了许多政务应用。