More Related Content
Similar to Python 庫簡介 (20)
More from Chui-Wen Chiu (20)
Python 庫簡介
- 1. 特别策划 Features
单独定义一个XML 文件。同样,借助
强大的动态能力,SQLObject 还拥有
一个Hibernate所远不及的功能,那就
是 SQLObject 的映射类可以在运行时
动态改变自身结构,这也意味着数
据库中的表结构也可以在运行时进
行改变。总之,对Hibernate略有了解
的开发者均能迅速理解 SQLObject。
虽然我一直认为 SQLObject 还远
未能将 Python 的动态能力发挥到极
致。不过这却是一个良好的开始。也
许我们可以在不久将来看到更多更
具新意的 O/R mapping 工具。
TurboGear
Python 库简介 自 RoR(Ruby on Rails)在 Web 开
发领域一夜成名后,在其它语言社
区,跟风之作也如雨后春笋一般涌
□ 文 / 汤韬 现出来。虽然TurboGear并非刻意模仿
RoR 之作,不过它确确实实借着 RoR
流行潮流得到更多人的重视。
“俗话”说:库即是语 需考虑库的各种兼容性问题。Python 与 RoR相同,TurboGear也是一个
言,语言即是库。由此可见拥有一套 社群对于库的重视可见一斑。 轻量级Web开发套件,通过几个命令
高质量、具备良好可复用库对于一 即便是拥有如此多的标准库。 行工具能够快速生成以数据库为核
门通用开发语言来说有多重要。这 这也似乎未能阻止Python社群的开发 心的基本框架代码。典型的 R o R 思
也的难怪“C + + 老爹”B j a r n e 者们天马行空般的思维。借助于动 想!这和许多开源框架的原则一样
Stroustrup 逢人就大倒苦水:C++的库 态语言简洁、优雅、灵活的表达能 ——“避免重新发明轮子” TurboGear
。
还是太少,C++社群需要开发更多高 力,这些第三方的库经常展现出令 的 Web 控制层使用 CherryPy;持久层
质量的库出来! 人赞叹的想象力。 使用 SQLObject;模板使用 Kid;AJAX
还好,为Python语言开发一套质 好吧,现在让我们在庞大的Py- 使用 MochiKit。几乎所有的重要的功
量不错的库的复杂程度远没有 C++ thon库选取点滴,也许它能带给我们 能组件都源自第三方。TurboGear自身
来得复杂。而且Python社区同样也深 一些另类的思考。 更像一个黏合剂,把所有的功能组
知库的重要性。结果就是Python的发 合在一起,并能够形成力量的倍增。
行版即奉上超过300个的标准库(这 SQLObject
还不包括专门针对 Mac 机的 50 余个 SQLObject 可以看做是 Python 领 4Suite
库,谁让那小子另类呢)。 域的 Hibernate。它也是目前 python社 虽然 Python 标准库提供了 XML
300 多个库中,绝大部分具备跨 区中最为成熟方便的O/R mapping工 处理工具,但是它只提供一些基本
平台能力(*NIX/Windows) 这些库
。 具。和Hibernate相比,SQLObject 利用 功能。如果你想获得更为强大的XML
覆盖了开发的方方面面,Python语言 了动态语言的独有特性,通过灵活使 处理能力,4Suite是一个更好的选择。
的用户可以在一个典型命令行环境 用继承、灵活使用 MetaData能力,能 4Suite被称为XML 工具中“内行
下(比如Linux Shell) 仅仅利用标准
, 够快速方便定义直接在程序中定义 的选择” 除了最基本的Dom-Like和
。
库即可完成绝大部分工作,同时无 映射类,不用像 Hibernate中那样还需 SAX-Like 处理库外,4Suite 还提供
62 程序员
- 2. >>> 程序员开源手册
XInclude,XPointer,XLink,XPath, 步网络服务器(所以它也被成为Py- 升整个应用的性能,在某些环境中
XUpdate 用于XML 文档的查询、更新 thon中ACE,如果你还不知道什么是 甚至能将速度提升一个数量级。
操作等等;提供XSLT完整处理能力。 ACE,那么看看前面关于C++库的文 虽然Psyco还不能视为一个真正
4Suite不光功能强大,性能也相 章),这是目前为止性能最好的网络 意义上的 JIT 的引擎,也无法像 Java
当不错。这主要是得益于其核心代 处理模型。也许是非阻塞异步处理 中的 JIT 那样提供完全透明的服务。
码部分采用C完成。这在需要处理大 的天生复杂性所致,Twisted 几乎是 但我们仍然要为Psyco的发展感到振
量 XML 文档的地方,4Suite实在是一 我所见过的最复杂,最难用的Python 奋。目前,在其最新版本中,只需两
个完美的选择。 库。Twisted 的使用者需要面对大量 行代码的添加,就能使你的程序充
新的概念和新的模式 ,这一点上和 分使用 Psyco,从而提升性能。
Pyro ACE 倒颇有几分相似。
Pyro 的全称是“Python Remote 陡峭的学习曲线,阻碍了很多 wxPython
Objects”。按照字面即可理解 Pyro 的 人掌握 Twisted 库。这也许是想要获 在许多人眼里,动态语言/脚本
功能:提供远程对象。Pyro 为Python 得高性能所付出的必要代价 。难怪 语言一般仅适合完成命令行或 WEB
语言提供异常简洁的 RPC 解决方案。 O’REYLLI在其出版的关于Twisted的 的工作,而在桌面开发方面实在是
其实 Python 语言中不乏一些更 书的封面引用了一只九头怪蛇,还 丑陋不堪。而 wxPython 的出现无疑
加通用的远程调用方案,例如都是 真是贴切。 是给这种偏见以有力的回击。
基于 XML 的 XMLRPC和 SOAP。那么 w x P y t h o n 实际上发展多年的
Pyro这样的单纯的Python远程调用方 C++ 框架 wxWindow (现已更名为
案具有什么样的优势呢?那就是性 w x W i d g e t s)的 P y t h o n 封装。而
能与易用性。 wxWindow的目标是建立一个跨平台
由于动态语言具有强大反射能 的 GUI 框架。wxWindow 现已能在
力,因此实现对象序列化对于Python Windows/Unix/Mac 上良好运行。自
来说简直易如反掌。对象的序列化 然wxPython也能横跨上述几个平台。
在 Python中被称为 pickle,这是许多 wxPython 使用的原生窗口。这就
Python应用的核心机制。Pyro 也正是 Psyco 意味着使用wxPython 开发的GUI 和操
充分利用 pickle 的威力,在网络间提 赞美Python的好话可以说一箩筐, 作系统本地 GUI 系统在界面外观上没
供远程对象的调用。它的性能要远 那么它的缺点是什么?这还用问吗,当 有任何区别。如果和Java中GUI库对比
远超过使用 XML 对远程对象进行编 然是性能。
性能——已经成为Python根 一下,就可以发现,wxPython 更加类
码 / 解码。同时,它在接口调用设计 深蒂固的老毛病了。不要说和C++/ 似 SWT 而不是Swing。因为SWT也是
上也非常简洁。在服务器端和客户 Java/C#这样的语言相比,即使是和它 使用的原生窗口,想想Eclipse 的界面
端只需 2、3 行代码就完成对象的封 的同门兄弟们——Ruby、Perl、PHP 这 有多漂亮就知道原生窗口的优势了。
装与调用,远比SOAP来得简单轻松。 样的脚本语言相比,Python的性能依然 虽然不少C++爱好者对wxWindow
是最糟糕的。
Python的设计者们似乎仅 框架的设计颇有微词,不过在经过
Twisted 仅在乎语言机制的完美,几乎不考虑性 Python的封装后,没有了指针、没有了
上个月,Zope 3.2发布,
在这个最 能。CPythony 引擎已经发展了这么多 MFC时代的事件机制,wx框架的易用
新版中, 一个重要的变化就是:使用 年,查看其源代码,性能优化代码少之 性获得了极大提升。这也是Python的另
了近十年的处理Web请求的网络框架 又少。对象引用模型至今还在使用引 一个巨大魅力所在。
代码被放弃,取而代之是以Twisted 为 用计数器的方式,至于发展一个 JIT 引 作者介绍:
核心实现的代码。据称这样可以改善 擎,算了吧,不要指望了。 汤韬,OSDN(www.osdn.net.
系统性能以及可扩展性。于是Twisted 还好,Psyco 的出现,带给我们 cn)网站开发主管,对 Linux以及
库再一次成为了人们关注的焦点。 了一线希望。Psyco 通过将运行中字 开源技术拥有广泛兴趣,喜好
Twisted 的核心概念是非阻塞异 节码编译为二进制代码从而大幅提 Python、Ruby 等动态语言。
Programmer 63