Python 3.0 beta 1 变化大,更简洁、更统一

论坛:IT江湖作者:驻伊美军发表时间:2008-06-21 20:33
本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除作者信息。
Python 3.0 beta 1 在跳票了很短的一段时间后,在 6 月 18 号发布了,其实北京时间应该是 19 号了(下载:http://www.python.org/download/releases/3.0/)。因为是第一个 beta 版本,所以从 what’s new 上可以看出做了很多更改,跟之前的 alpha 版本有较大的不同。最大的特点在于完全依照了更简洁、更统一的精神,修正了许多原有版本中遗留下来的缺陷。
win9x 算是走到了尽头了,py3.0 b1 已经去除了 winsound 模块对 win9x 的支持。除此之外,b1 版本修正了几十个 bugs。另外,值得一提的是生成器有了 gen.__name__ 属性,就像函数的 func.__name__ 属性一样,enumerate() 多了一个 start 参考,显然,这有一定的需要。
beta 1 的特色之一是许多标准模块以包的形式组织:比如 urllib 包,它包括了原来 urllib、urllib2、urlparse、robotparse等模块的内容;另外是多了一个 http 包,原来的 httplib 变成了 http.client,Cookie 变成 http.cookies,cookieslib变成了 http.cookiejar,而 HTTPServer 就成了 http.server;还多了 xmlrpc 包,包括了原来的 xmlrpclib 等模块;之前类似的 dbm、gdbm、dbhash等全部放入了新建立的 dbm 包里面。怎么样,看起来是 pythonic 多了吧?之前的标准库实在太乱了,全部乱乱地放在 libs 下,这样整理一下非常有必要。
还有许多原来 python 版本和 C 版本库,如 cStringIO 和 StringIO、pickle 和 cPickle、profile 与 cProfile 等都统一用 C 版本了,但保留了原来 python 版本的模块名,如 pickle。这种整理也非常必要,许多初学者不知道用哪个版本的好,许多模块功能一样的,没有必要给用户太多选择,给最好的就行了。
最后是 Queue 改名为 queue,ConfigParser 改名为 configparser,copy_reg 改名为 copyreg,_winreg 改名为 winreg。threading 模块的 API 也变得更另 pythonic了,可以预见 python 3.0 写出来的代码风格会更加统一,可读性会更好。
直接去除了模块也非常多。比如处理 email 的 rfc822、mimetools;还有 htmllib 和 sgmllib。commands、multifile、sre、mhlib、fpformat、dircache、Canvas、user 和 mutex 等模块都被删除啦,不过其中有些库我都很少用到。还有跟 import 有关的 ihooks 和 imputil 模块也被删除了,呜呜,我有代码是用 imputil 的呀,还是改用 imp 好了,终究标准模块保险啊。
implement PEP 3138. repr() now returns printable Unicode characters unescaped, to get an ASCII-only representation of an object use ascii().Implement PEP 3121: new module initialization and finalization API.这是最新的两个 PEP 实现,基本上无需要关注,当透明就好了。
对比前面几个 alpha 版本,可以发现一些基础设施如 bytes、int 和一些跟 unicode 有关的部分已经渐渐稳定下来,对于像itertools 中的 izip()、imap()替代 builtin 的 zip、map等语言特色的东西都已经完成,可以说核心进度颇佳。估计 beta 版本更多的是重新整理库的组织形式、修 bug 和优化了。对于 py3.0,我觉得精彩可期啊!链接
标签: 添加标签

0 / 0

发表回复
 
  • 标题
  • 作者
  • 时间
  • 长度
  • 点击
  • 评价

京ICP备14028770号-1