Python
不仅仅是一个设计优秀的程序语言,
它能够完成现实中的各种任务,
包括开发者们日复一日所做的事情。作为编制其他组件、实现独立程序的工具,
它通常应用于各种领域。实际上,作为一种通用语言,
Python
的应用角色几乎
是无限的:你可以在任何场合应用
Python,
从网站和游戏开发到机器人和航天
飞机控制。
尽管如此,
Python
的应用领域分为如下几类。下文将介绍一些
Python
如
今最常见的应用领域,
以及每个应用领域内所用的一些工具。
我们不会对各个工
具进行深入探讨,如果你对这些话题感兴趣,请从
Python
网站或其他一些资源
中获取更多的信息。
系统编程
Python
对操作系统服务的内置接口,使其成为编写可移植的维护操作系统
的管理工具和部件(有时也被称为
Shell
工具)的理想工具。
Python
程序可以
搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等等。
Python
的标准库绑定了
POSIX
以及其他常规操作系统(
OS
)工具:环境
变量、
文件、
套接字、
管道、
进程、
多线程、
正则表达式模式匹配、
命令行参数、
标准流接口、
Shell
命令启动器、文件名扩展等。此外,很多
Python
的系统工
具设计时都考虑了其可移植性。
例如,
复制目录树的脚本无需做任何修改就可以
在几乎所有的
Python
平台上运行。
用户图形接口
Python
的简洁以及快速的开发周期十分适合开发
GUI
程序。
Python
内置
了
TKinter
的标准面向对象接口
Tk GUI API
,使
Python
程序可以生成可移植
的本地观感的
GUI
。
Python/ Tkinter GUI
不做任何改变就可以运行在微软
Windows
、
X Windows
(
UNIX
和
Linux
)以及
Mac OS
(
Classic
和
OS X
都支
持)等平台上。一个免费的扩展包
PMW
,为
Tkinter
工具包增加了一些高级部
件。此外,基于
C++
平台的工具包
wxPython GUI API
可以使用
Python
构建可
移植的
GUI
。
诸如
PythonCard
和
Dabo
等一些高级工具包是构建在
wxPython
和
Tkinter
的基础
API
之上的。
通过适当的库,
你可以使用其他的
GUI
工具包,
例如,
Qt
、
GTK
、
MFC
和
Swing
等。对于运行于浏览器中的应用或在一些简单界面的需求
驱动下,
Jython
(
Java
版本的
Python
,
我们将会在第
2
章中进行介绍)
和
Python
服务器端
CGI
脚本提供了其他一些用户界面的选择。
Internet
脚本
Python
提供了标准
Internet
模块,
使
Python
能够广泛地在多种网络任务
中发挥作用,
无论是在服务器端还是在客户端都是如此。
脚本可以通过套接字进
行通信;从发给服务器端的
CGI
脚本的表单中解析信息;通过
URL
获取网页;
从获取的网页中解析
HTML
和
XML
文件;通过
XML-RPC
、
SOAP
和
Telnet
通信
等。
Python
的库使这一切变得相当简单。
不仅如此,从网络上还可以获得很多使用
Python
进行
Internet
编程的第
三方工具。例如,
HTMLGen
可以从
Python
类的描述中生成
HTML
文件,
mod_python
包可以使在
Apache
服务器上运行的
Python
程序更具效率并支持
Python Server Page
这样的服务器端模板,而且支持客户端运行的服务器端
Applet
。此外,
Python
涌现了许多
Web
开发工具包,例如,
Django
、
TurboGears
、
Pylons
、
Zope
和
WebWare
,使
Python
能够快速构建功能完善
和高质量的网站。
组件集成
在介绍
Python
作为控制语言时,曾涉及它的组件集成的角色。
Python
可
以通过
C/C++
系统进行扩展,并能够嵌套
C/C++
系统的特性,使其能够作为一
种灵活的粘合语言,
脚本化处理其他系统和组件的行为。
例如,
将一个
C
库集成
到
Python
中,
能够利用
Python
进行测试并调用库中的其他组件;
将
Python
嵌
入到产品中,
在不需要重新编译整个产品或分发源代码的情况下,
能够进行产品
的单独定制。
为了在脚本中使用,在
Python
连接编译好组件时,例如,
SWIG
和
SIP
这
样的代码生成工具可以让这部分工作自动完成。
更大一些的框架,
例如,
Python
的微软
Windows
所支持的
COM
、基于
Java
实现的
Jython
、基于
.NET
实现的
IronPython
和各种
CORBA
工具包,提供了多种不同的脚本组件。例如,在
Windows
中,
Python
脚本可利用框架对微软
Word
和
Excel
文件进行脚本处理。
数据库编程
对于传统的数据库需求,
Python
提供了对所有主流关系数据库系统的接口,
例如,
Sybase
、
Oracle
、
Informix
、
ODBC
、
MySQL
、
PostgreSQL
、
SQLite
。
Python
定义了一种通过
Python
脚本存取
SQL
数据库系统的可移植的数据库
API
,这个
API
对于各种底层应用的数据库系统都是统一的。例如,因为厂商
的接口实现为可移植的
API
,所以一个写给自由软件
MySQL
系统的脚本在很大
程度上不需改变就可以工作在其他系统上
(例如,
Oracle
)
--
你仅需要将底层
的厂商接口替换掉就可以实现。
Python
标准的
pickle
模块提供了一个简单的对象持久化系统:它能够让
程序轻松地将整个
Python
对象保存和恢复至文件和文件类的对象中。
在网络上,
同样可以找到名叫
ZODB
的第三方系统,它为
Python
脚本提供了完整的面向对
象数据库系统,
系统
SQLObject
可以将关系数据库映射至
Python
的类模块。
并
且,
从
Python
2.5
版本开始,
SQLite
已经成为
Python
自带标准库的一部分了。
快速原型
对于
Python
程序来说,使用
Python
或
C
编写的组件看起来都是一样的。
正因为如此,我们可以在一开始利用
Python
做系统原型,之后再将组件移植到
C
或
C++
这样的编译语言上。
和其他的原型工具不同,
当原型确定后,
Python
不
需要重写。系统中不需要像
C++
这样执行效率的部分可以保持不变,从而使维
护和使用变得轻松起来。
数值计算和科学计算编程
我们之前提到过的
NumPy
数值编程扩展包括很多高级工具,例如,矩阵对
象、标准数学库的接口等。通过将
Python
与出于速度考虑而使用编译语言编写
的数值计算的常规代码进行集成,
NumPy
将
Python
变成一个缜密严谨并简单易
用的数值计算工具,这个工具通常可以替代已有的代码,而这些代码都是用
FORTRAN
或
C++
等编译语言编写的。
其他一些数值计算工具为
Python
提供了动
画、
3D
可视化、并行处理等功能的支持。
游戏、图像、人工智能、
XML
、机器人等
Python
的应用领域很多,远比这里提到的多得多。例如,可以利用
pygame
系统使用
Python
对图形和游戏进行编程;
用
PIL
和其他的一些工具进行图像处
理;
用
PyRo
工具包进行机器人控制编程;
用
xml
库、
xmlrpclib
模块和其他一
些第三方扩展进行
XML
解析;
使用神经网络仿真器和专业的系统
shell
进行
AI
编程;
使用
NLTK
包进行自然语言分析:
甚至可以使用
PySol
程序下棋娱乐。
可
以从
Vaults of Parnassus
以及新的
PyPI
网站(请在
或
http://www.python.org
上获得具体链接)找到这些领域的更多支持。
一般来说,
这些特定领域当中有许多在很大程度上都是
Python
组件集成角
色的再次例证。采用
C
这样的编译语言编写库组件,增加
Python
至其前端,这
样的方式使
Python
在不同领域广泛地发挥其自身价值。
对于一种支持集成的通
用型语言,
Python
的应用极其广泛。
企业与政务应用
目前,
Python
已经成功的实现企业级应用,在全球,已经有很多公司采用
Python
进行企业级软件的开发和应用,比如:
ERP
和
CRM
这样的应用。同时,通
过
Python
技术,成功的实现了许多政务应用。
用
Python
写的较大的系统有:
Zope
:一个应用程序服务器,具有内容管理、团队开发、
XML
、面向对象、
SOAP
接口等一系先进特性,且开放源码。参见:
www.zope.com
。
Gadfly
:一个用
Python
写的面向对象关系型数据库,具有小巧、快速、可
移植性好,具有大部分
SQL
语言特性,且开放源码。参见:
http://www.chordate.com/gadfly.html
。
还有一些比较有名的公司也在用
Python
进行原型的开发,如
Microsoft
、
IBM
等,还有:
红帽
(Red
Hat
)
曾用
Python
和
Tk
一起成功开发配置和管理操作系统的可视
界面。
整个系统可以全面控制
Linux
操作系统,
并根据用户选择对配置文件作自
动更新。
Infoseek
在其公用搜索引擎使用了
Python
。
该公司还用
Python
对其软件进
行定制,使最终用户能对该网站内容进行方便下载。
云计算平台
(
运维系统
)
OpenStack
是
IaaS(
基础设施即服务
)
组件,
让任何人都可以自行建立和提供云端
运算服务
,
全部采用
python
开发
OpenStack
是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
它的
社区拥有超过
130
家企业及
1350
位开发者,这些机构与个人都将
OpenStack
作
为基础设施即服务
(简称
IaaS
)
资源的通用前端。
OpenStack
项目的首要任务是
简化云的部署过程并为其带来良好的可扩展性。
本文希望通过提供必要的指导信
息,帮助大家利用
OpenStack
前端来设置及管理自己的公共云或私有云。
企业内部采用
python
开发运维管理系统,因为
python
在
web ,
系统管理方面
都比较擅长,还有面向对象特性,这是
shell
脚本不能胜任的,相比
perl
他语
法简单,可读性强,所是可以大面积使用的语言
Python
和其他语言比较
比
Tcl
强大。
Python
支持
"
大规模编程
"
,使其适宜于开发大型系统。
有着比
Perl
更简洁的语法和更简单的设计,这使得
Python
更具可读性、
更易于维护,有助于减少程序
bug
。
比
Java
更简单、
更易于使用。
Python
是一种脚本语言,
Java
从
C++
这样
的系统语言中继承了许多语法和复杂性。
比
C++
更简单、更易于使用,但通常也不与
C++
竞争。因为
Python
作为
脚本语言,常常扮演多种不同的角色。
比
Visual Basic
更强大也更具备跨平台特性。由于
Python
是开源的,也
就意味着它不可能被某一个公司所掌控。
比
Ruby
更成熟、语法更具可读性。与
Ruby
和
Java
不同的是,
OOP
对于
Python
是可选的:这意味着
Python
不会强制用户或项目选择
OOP
进行开发。
具备
SmallTalk
和
Lisp
等动态类型的特性,
但是对开发者及定制系统的终
端用户来说更简单,也更接近传统编程语言的语法。
特别对不仅仅做文本文件扫描还有也许未来会被人们读到
(或者说你)
的程
序而言,很多人会发现
Python
比目前任何的可用的脚本或编程语言都划得来。
不仅如此,
除非你的应用要求最尖端的性能,
Python
往往是
C
、
C++
和
Java
等
系统开发语言的一个不错的替代品:
Python
将会减少很多编写、调试和维护的
麻烦。
目前使用
Python
的企业
在其网络搜索系统中广泛应用了
Python
,
并且聘用了
Python
的创
作者。
YouTube
视频分享服务大部分是由
Python
编写的。
流行的
P2P
文件分享系统
Bittorrent
是一个
Python
程序。
Intel
、
Cisco
、
Hewlett-Packard
、
Seagate
、
Qualcomm
和
IBM
使用
Python
进行硬件测试。
Industrial Light & Magic
、
Pixar
等公司使用
Python
制作动画电影。
在经济市场预测方面,
JPMorgan Chase
、
UBS
、
Getco
和
Citadel
使用
Python
。
NASA
、
Los
Alamos
、
Fermilab
、
JPL
等使用
Python
实现科学计算任务。
IRobot
使用
Python
开发了商业机器人真空吸尘器。
ESRI
在其流行的
GIS
地图产品中使用
Python
作为终端用户的定制工具。
NSA
在加密和智能分析中使用
Python
。
IronPort
电子邮件服务器产品中使用了超过
100
万行的
Python
代码实现
其作业。
OLPC
使用
Python
建立其用户界面和动作模块。
总结:
个人总结
python
有两个主要优点:
一
.
胶水语言
Python
在功能方面是个折中的语言,
在各个领域相比来说没有特别突出,
他的优点在于,
他与各语言的集成度很高,
就像一个胶水,
其实这在目前开发语言百花齐放的阶段,
各个
系统独立分散,环境复杂,确实需要一个通用的语言能架起他们之前的桥梁
,
它对各语言
的支持最广泛,
甚至都可以调用其它语言的类库,
在云时代迫切需要一个环境单一,
便于
维护的,开源的,支持广泛应用的系统,
python
虽然是一门很老的语言,但他的应用领
域还是一些比较新的领域,他的潜力很大,他经历了这么久的历练,相信在云时代,他会
有不可替代的作用
二
.
可维护性
一个好的代码,不仅仅是自己能看懂,其它人能看懂,这才是很好的代码,
python
代码倡导简洁,可读性强,这是他最明显的优点,相比
java
他语法更简单,同功能
代码量更少
,
他是新一代的面向对象的脚本语言。