虽然是自己到处搜集的,但是在学习之前看一下,一是目标更加准确,二是信心也有不小的提升。。。
1. 系统编程
Python对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也称为Shell工具)的理想工具。
Python程序可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等。
Python的标准库绑定了POSIX以及其他常规操作系统(OS)工具:环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、Shell命令启动器、文件名扩展等。
此外,很多Python的系统工具设计时都考虑了其可移植性。例如,复制目录树的脚本无需做任何修改就可以在几乎所有的Python平台上运行。
EVE Online所采用的Stackless Python还为多处理需求提供了高级的解决方案。
2. 用户图形接口
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之上的。
通过适当的库,你可以在Python中使用其他的GUI工具包,例如,通过PyQt使用Qt、通过PyGTK使用GTK、通过PyWin32使用MFC、通过IronPython使用.NET,以及通过Jython(Java版本的Python,我们将会在第2章中进行介绍)使用Swing等。
对于运行于浏览器中的应用或具有一些简单界面需求的应用,Jython和Python Web框架以及服务器端CGI脚本(下一节将介绍)都提供了其他的用户界面的选择。
3. Internet脚本
Python提供了标准Internet模块,它使得Python程序能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。
脚本可以通过套接字进行通信;从发给服务器端的CGI脚本的表单中提取信息;通过FTP传输文件;解析、生成和分析XML文件;发送、接受、编写和解析Email;通过URL获取网页;从获取的网页中解析HTML和XML文件;通过XML-RPC、SOAP和Telnet通信等。
Python的库使这一切变得相当简单。不仅如此,从网络上还可以获得很多使用Python进行Internet编程的第三方工具。
例如,HTMLGen可以从Python类的描述中生成HTML文件,mod_python包可以使在Apache服务器上运行的Python程序更具效率并支持Python Server Page这样的服务器端模板,Jython系统提供了无缝的Python/Java集成而且支持在客户端运行的服务器端Applet。
此外,涌现了许多针对Python的Web开发工具包,例如,Django、TurboGears、web2py、Pylons、Zope和WebWare,它们使得Python能够快速构建功能完善和高质量的网站。
很多这样的工具包包含了诸如对象关系映射器、模型/视图/控制器架构、服务器端脚本和模板,以及支持AJAX等功能,从而提供了完整的、企业级的Web开发解决方案。
4. 组件集成
在介绍Python作为控制语言时,曾涉及它的组件集成的角色。
Python可以通过C/C++系统进行扩展,并能够嵌套C/C++系统的特性,使其能够作为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为。
例如,将一个C库集成到Python中,能够利用Python进行测试并调用库中的其他组件;将Python嵌入到产品中,在不需要重新编译整个产品或分发源代码的情况下,能够进行产品的单独定制。
为了在脚本中使用,在Python连接编译好组件时,SWIG和SIP这样的代码生成工具可以让这部分工作自动完成,并且CPython系统允许代码混合到Python和类似C的代码中。
更大一些的框架,例如,Python的微软Windows所支持的COM,基于Java实现的Jython,基于.NET实现的IronPython和各种CORBA工具包,提供了多种不同的脚本组件。
例如,在Windows中,Python脚本可利用框架对微软Word和Excel文件进行脚本处理。
5. 数据库编程
对于传统的数据库需求,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自带标准库的一部分了。
6. 快速原型
对于Python程序来说,使用Python或C编写的组件看起来都是一样的。
正因为如此,我们可以在一开始利用Python做系统原型,之后再将组件移植到C或C++这样的编译语言上。
和其他的原型工具不同,当原型确定后,Python不需要重写。系统中不需要像C++这样执行效率的部分可以保持不变,从而使维护和使用变得轻松起来。
7. 数值计算和科学计算编程
我们之前提到过的NumPy数值编程扩展包括很多高级工具,例如,矩阵对象、标准数学库的接口等。
通过将Python与出于速度考虑而使用编译语言编写的数值计算的常规代码进行集成,NumPy将Python变成一个缜密严谨并简单易用的数值计算工具,这个工具通常可以替代已有的代码,而这些代码都是用FORTRAN或C++等编译语言编写的。
其他一些数值计算工具为Python提供了动画、3D可视化、并行处理等功能的支持。例如,常用的SciPy和ScientificPython扩展,为使用科学编程工具以及NumPy代码提供了额外的库。
8. 游戏、图像、人工智能、XML、机器人等
Python的应用领域很多,远比本书提到的多得多。例如:
可以利用pygame系统使用Python对图形和游戏进行编程。
使用PySerial扩展在Windows、Linux以及更多系统上进行串口通信。
用PIL、PyOpenGL、Blender、Maya和其他的一些工具进行图像处理。
用PyRo工具包进行机器人控制编程。
用xml库、xmlrpclib模块和其他一些第三方扩展进行XML解析。
使用神经网络仿真器和专业的系统shell进行AI编程。
使用NLTK包进行自然语言分析。
你甚至可以使用PySol程序下棋娱乐。可以从PyPI网站或通过网络搜索(请在http://www.python.org上获得具体链接)找到这些领域的更多支持。
一般来说,这些特定领域当中有许多在很大程度上都是Python组件集成角色的再次例证。
采用C这样的编译语言编写库组件,增加Python至其前端,这样的方式使Python在不同领域广泛地发挥其自身价值。对于一种支持集成的通用型语言,Python的应用极其广泛。