1.1.3 Python的特点及应用领域
学习一门编程语言,应该了解其特点及适用领域。Python语言的特点及应用领域如下。
1. 特点
(1)优点
简单易学:在开发者社群流行着一句玩笑—“人生苦短,我用Python。”这句话实际上并非戏言,Python是一种代表简单主义思想的语言,可以使用尽量少的代码完成更多工作。Python使开发者能够专注于解决问题而不是去搞明白语言本身。另外,Python有极其简单的说明文档,使得初学者很容易上手。
免费开源:FLOSS(Free/Libre and Open Source Software)的中文含义是自由、开源软件,其已被证实为当今最好的开放、合作、国际化产品和开发样例之一,已经为政府、企业、学术研究团体和开源领域机构带来巨大的利益。Python是FLOSS,使用者可以自由地发布这个软件的副本,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。
跨平台性:由于Python的开源本质,它已经被移植到许多平台上,在Linux、Windows、Macintosh(Mac OS)、Android等平台上都可以运行用Python语言编写的程序。
高层语言:与C/C++语言不同,使用Python语言编写程序时无须考虑诸如“如何管理你的程序使用的内存”之类的底层细节,从而使得开发者可以在忽略底层细节的情况下专注于如何使用Python语言解决问题。
面向对象:Python既支持面向过程的编程,也支持面向对象的编程。面向过程的编程方法是对要解决的问题进行逐层分解,对每个分解后的子问题分别求解,最后再将各子问题的求解结果按规则合并形成原始问题的解。面向对象的编程方法则是模仿人类认识客观世界的方式,将软件系统看成由多类对象组成,通过不断创建对象以及实现对象之间的交互完成软件系统的运转。面向对象编程方法更符合人类认识客观世界的方式,因此目前已被广泛使用。但需要注意,面向对象和面向过程并不是完全独立的两种编程方法,当我们使用面向对象方法设计和编写程序时,对于其中涉及的复杂问题也需要采用面向过程的方法,通过“层层分解、逐步求精”的方式分步骤解决。
丰富的库:Python官方提供了非常完善的标准代码库,有助于处理各种工作,包括网络编程、输入输出、文件系统、图形处理、数据库、文本处理等。除了内置库,开源社区和独立开发者为Python贡献了丰富的第三方库,如用于科学计算的NumPy、用于Web开发的Django、用于网页爬虫的Scrapy和用于图像处理的OpenCV等,其数量远超其他主流编程语言。代码库相当于已经编写完成并打包,以供开发者使用的代码集合,程序员只需通过加载、调用等操作手段即可实现对库中函数、功能的使用,从而省去了自己编写大量代码的过程,让编程工作看起来更像是在“搭积木”。
胶水语言:Python本身被设计成具有可扩展性,提供了丰富的API和工具,以便开发者能够轻松使用包括用C、C++等编程语言编写的模块来扩充程序。例如,如果需要一段关键代码运行得更快或者希望某些算法不公开,可以将部分程序用C或C++编写,然后在Python程序中使用它们。Python就像胶水一样把用其他编程语言编写的模块黏合过来,让整个程序同时兼备其他语言的优点,起到了黏合剂的作用。正是这种“胶水”的角色让Python近几年在开发者团体中声名鹊起,因为互联网与移动互联时代的需求量急速倍增,大量开发者急需一种高速、敏捷的工具来助其处理与日俱增的工作,Python目前的形态正好满足了这种需求。
(2)缺点
单行语句:与C/C++语言不同,Python语句的末尾不需要写分号,所以一行只能有一条语句,而无法将多条语句放在同一行中书写,例如,import sys;for i in sys.path:print i这种写法是错误的。而Perl和AWK中就无此限制,可以较为方便地在Shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
强制缩进:Python用缩进方式来区分语句之间的关系,给许多用过C/C++或Java的开发者带来了困惑。但如果习惯了这种强制缩进写法,开发者就会觉得它非常优雅,能够清晰地体现出各语句的层次关系。
运行速度慢:由于Python是解释型语言,所以它的运行速度会比C/C++慢一些,对一些实时性要求比较强的程序会有一些影响。但如前所述,Python是一种“胶水语言”,能够非常方便地使用用C/C++语言编写的模块,所以对于速度要求比较高的关键运算模块,可以使用C/C++语言编写。
2. 应用领域
Python适用于以下领域:
系统编程:提供API(Application Programming Interface,应用程序编程接口),能方便地进行系统维护和管理,是Linux下标志性语言之一,也是很多系统管理员理想的编程工具。
图形界面开发:Python在图形界面开发方面很强大,可以用Tkinter/PyQt框架开发各种桌面软件。
科学计算:Python是一门很适合做科学计算的编程语言。从1997年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合进行科学计算并绘制高质量的二维和三维图像。
文本处理:Python提供的re模块能支持正则表达式,还提供SGML、XML分析模块,许多程序员利用Python进行XML程序的开发。
数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server、Oracle、Sybase、DB2、MySQL、SQLite等数据库通信。另外,Python自带一个Gadfly模块,提供了完整的SQL环境。
网络编程:Python提供丰富的模块以支持Sockets编程,能方便、快速地开发分布式应用程序。
Web开发:Python拥有很多免费数据函数库、免费Web网页模板系统以及与Web服务器进行交互的库,可以实现Web开发,搭建Web框架。目前非常流行的Python Web框架是Django,Django官方把Django定义为“the framework for perfectionist with deadlines”(完美主义者使用的高效率Web框架)。用Python开发的Web项目小而精,支持最新的XML技术,而且数据处理功能较为强大。
自动化运维:Python是运维人员广泛使用的语言,能满足绝大部分自动化运维需求,包括前端和后端。
金融分析:利用NumPy、Pandas、SciPy等数据分析模块,可快速完成金融分析工作。目前,Python是金融分析、量化交易领域里使用得最多的语言。
多媒体应用:Python的PyOpenGL模块封装了OpenGL应用程序编程接口,能进行二维和三维图像处理。
游戏开发:在网络游戏开发中Python也有很多应用。相比Lua,Python有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑。另外,Python更适合作为一种Host语言,即将程序的入口点设置在Python那一端会比较好,然后用C/C++写一些扩展。Python非常适合编写代码行数在1万行以上的项目,而且能够很好地把网游项目的规模控制在10万行代码以内。
人工智能:NASA和Google早期大量使用Python,为Python积累了丰富的科学运算库。当AI(Artificial Intelligence,人工智能)时代来临后,Python从众多编程语言中脱颖而出,各种AI算法都基于Python编写。在神经网络、深度学习方面,Python都能够找到比较成熟的包来加以调用。另外,Python是面向对象的动态语言,且适用于科学计算,这就使得Python在AI领域备受青睐。
网络爬虫:在爬虫领域,Python几乎处于霸主地位,提供了Scrapy、Request、BeautifulSoup、urllib等工具库,将网络中的一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。
使用Python语言编写程序来实现功能是非常简单的。例如,使用Python爬取指定网页上的数据,只需要几行代码即可实现,如下面的代码所示。
#首先,导入Python中用于网络爬虫的urllib.request模块
from urllib import request
#然后,通过下面这两条语句就可以将URL的源码存储在content变量中,其类型为字符串型
url='http://www.nankai.edu.cn' #把等号右边的网址赋值给url
content=request.urlopen(url).read() #等号后面的动作是打开源代码页面并阅读
#最后,可以将获取的URL源码通过print函数输出
print(content)