。对比前面几个 alpha 版本,可以发现一些基础设施如 bytes、int 和一些跟 unicode 有关的部分已经渐渐稳定下来,对于像itertools 中的 izip()、imap()替代 builtin 的 zip、map等语言特色的东西都已经完成,可以说核心进度颇佳。估计 beta 版本更多的是重新整理库的组织形式、修 bug 和优化了。对于 py3.0,我觉得精彩可期啊!
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,我觉得精彩可期啊!