1.1 Python简介
1.1.1 什么是Python
Python(发音[ˈpaɪθən])本义是指“蟒蛇”(这里需要说明的是,Python并不是以蟒蛇命名,而是以电视节目Monty Python’s Flying Circus来命名的),标志如图1.1所示。它是1989年由荷兰人Guido van Rossum发明的一种面向对象的解释型高级编程语言。它的设计哲学为优雅、明确、简单。实际上,Python也是按照这个理念做的,以至于现在网络上流传着“人生苦短,我用Python”的说法。可见Python有着简单、开发速度快、节省时间和精力等特点。
图1.1 Python的标志
Python本身并非所有的特性和功能都集成到语言核心,而是被设计为可扩充的。它具有丰富和强大的库,能够把用其他语言(尤其是C/C++)制作的各种模块很轻松地联结在一起。为此,Python常被称为“胶水”语言。
在1991年Python的第一个公开发行版问世之后,Python的发展并不突出。自从2004年以后,Python的使用率呈线性增长。在2010年时,Python赢得TIOBE 2010年度语言大奖。在2017年,IEEE Spectrum发布的2017年度编程语言排行榜中,Python位居第一,如图1.2所示。
图1.2 IEEE Spectrum发布的2017年度编程语言排行榜前10名
1.1.2 Python的版本
Python自发布以来,主要经历了3个版本的变化。分别是1994年发布的Python 1.0版本(已过时),2000年发布的Python 2.0版本(现在已经更新到2.7.x)和2008年发布的3.0版本(现在已经更新到3.6.x)。
1.Python 2.x和3.x的区别
Python在版本升级时,并不是向下兼容的。在Python的官方网站中同时发布了两个不同系列的版本,分别是Python 2.x版本和Python 3.x版本,它们之间在基本语法上主要存在以下区别。
在Python 2.x中,print语句被Python 3.x中的print()函数所代替。
在Python 3.x中,整数之间的相除(采用除法运算符“/”实现),结果是浮点数,而在Python 2.x中结果是整数。
Python 3.x源码文件默认使用UTF-8编码,所以支持直接写入的中文,而Python 2.x默认编码是ASCII,直接写入中文会被转换为ANSI编码。所以在Python 2.x中需要进行相应的转换。
在Python 3.x中将range()与xrange()函数整合为一个range()函数,所以在Python 3.x中不存在xrange()函数,而在Python 2.x中这两个函数是并存的。
说明
除了以上列出的几点主要区别,Python 3.x和Python 2.x还有一些其他的区别,这里将不再列举,在后面的章节中涉及时再进行详细介绍。
2.初学者应该选择哪个版本
目前,根据Semaphore社区的调查结果,使用Python 2.x的开发者占63.7%,而使用Python 3.x的用户占36.3%,由此可见,使用Python 2.x的还是占多数。并且Python的作者曾于2014年宣布Python 2.7支持时间延长到2020年。那么作为初学者应该选择什么版本呢?
答:笔者建议初学者应该选择Python 3.x版本。理由主要有以下几点。
使用Python 3.x毕竟是大势所趋
虽然目前使用Python 2.x的开发者居多,但是使用Python 3.x的开发者更愿意进行版本更新,并且使用Python 3.x版本的开发者正在迅速扩展,如图1.3所示。
Python 3.x较Python 2.x有很大改进
Python 3.x对Python 2.x的标准库进行了一定程度的重新拆分和整合,使得它比Python 2.x更容易理解,特别是在字符编码方面。Python 2.x中对于中文字符串支持不好,需要编写单独的代码对中文进行处理,否则不能正确显示中文。但是在Python 3.x中已经成功地解决了这一难题。
Python 3.x和Python 2.x思想基本是共通的
Python 3.x和Python 2.x思想基本是共通的,只有少量的语法差别。学会了Python 3.x,只要稍微花一点时间学习Python 2.x的语法,两种语言就都学会了。
图1.3 Python主流版本所占的比例
说明
当然,选择Python 3.x也会有缺点,那就是很多扩展库的发行总是滞后于Python的发行版本,甚至目前还有很多库不支持Python 3.x。因此,在选择Python时,一定要先考虑清楚自己的学习目的。例如,打算做哪方面的开发,需要用到哪些扩展库,以及扩展库支持的最高Python版本等。明确这些问题后,再做出选择。
1.1.3 Python都能做什么
Python作为一种功能强大,并且简单易学的编程语言而广受好评,那么Python都能做什么呢?概括起来有以下几个方面。
1.Web开发
使用Python的一个基本应用就是进行Web开发。在国内,大一些的使用Python做基础设施的公司有豆瓣、知乎、美团、饿了么,以及搜狐等。在国外,Google在其网络搜索系统中广泛应用了Python,并且聘用了Python之父。另外,YouTube视频分享服务大部分也是用Python编写的,如图1.4所示。
图1.4 在Web开发方面应用Python的公司
2.大数据处理
随着近几年大数据的兴起,Python也得到了前所未有的爆发。Python借助第三方的大数据处理框架可以很容易地开发出大数据处理平台。到目前为止,Python是金融分析、量化交易领域里使用最多的语言。例如,美国银行就利用Python语言开发出了新产品和基础设施接口,用于处理金融数据。
3.人工智能
人工智能(Artificial Intelligence),英文缩写为AI。Python之所以这么火,主要是借助人工智能的发展。Python是一门脚本语言,它更适合去做人工智能这个领域,在人工智能上使用Python比其他编程语言有更大的优势。主要的优势在于它简单、快速、可扩展(主要体现在可以应用多个优秀的人工智能框架)等。另外,Python中的机器学习可以实现人工智能领域中的大多数需求。
4.自动化运维开发
掌握一门开发语言已经成为高级运维工程师的必备技能。Python是一个简单、易学的脚本语言,能满足绝大部分自动化运维的需求。而对于运维工程师,通常不会开发,所以想学门开发语言,Python是首选。
5.云计算
Python可以广泛地在科学计算领域发挥独特的作用。通过强大的支持模块可以在计算大型数据、矢量分析、神经网络等方面高效率地完成工作,尤其是在教育科研方面,可以发挥出独特的优势。从1997年开始,NASA就在大量使用Python进行各种复杂的科学运算。现在终于发明了一套云计算软件,取名为OpenStack(开放协议栈),并且对外公开发布。
6.爬虫
网络爬虫(也称为spider)始于也发展于百度、谷歌。但随着近几年大数据的兴起,爬虫应用被提升到前所未有的高度。多数分析挖掘公司都以网络爬虫的方式得到不同来源的数据集合,最后为其所用,构建属于自己的大数据综合平台。在爬虫领域,Python几乎是霸主地位,通过它提供的标准支持库基本上可以做到随意获取想要的数据。
7.游戏开发
通过Python完全可以编写出非常棒的游戏程序。例如,知名的游戏Sid Meier’s Civilization(文明)就是用Python编写的。另外,在网络游戏开发中Python也有很多应用。它作为游戏脚本内嵌在游戏中,这样做的好处是既可以利用游戏引擎的高性能,又可以受益于脚本化开发等优点。
说明
Python的应用领域远比上面提到的多得多。例如,使用Python对图形/图像进行处理、编程控制机器人、数据库编程、编写可移植的维护操作系统的工具,以及进行自然语言分析等。