开发人员眼中的 Python 3

  • Jonathan Allen
  • 王瑜珩

2011 年 8 月 21 日

话题:Python架构语言 & 开发

Python 3 正式版已经发布两年半了,由于新版本没有向后兼容 2.x 版,大家对它的反应也不太一样。为了搞清楚开发人员是如何看待 Python 3 的,我们采访了 Virgil Dupras。

InfoQ:请先介绍一下自己,你在平时的工作中哪些地方用到了 Python?

Virgil Dupras:我用 PyObjC 和 PyQT 开发了一些开源的桌面应用程序,发布在http://www.hardcoded.net/上。我之前是做 Delphi 的,但从 2005 年开始就一直使用 Python 了。

InfoQ:一年前你就切换到了 Python 3 上,主要原因是什么?

Virgil Dupras: 我非常喜欢 Python,我想让它变得更好。我希望能够更多的参与到核心语言的开发中,但后来发现我还是不够聪明。当然,我还可以提交补丁(我确实提交了一些),可事实上我几乎就没遇到过 Python 有什么缺陷,因此也没什么补丁好提交的。

所以,我觉得我能够帮助 Python 的最好方法就是做一个 Python 3 的早期使用者,这也确实达到我了目的。我没遇到过 Python 本身的问题,到是很多库有缺陷。我还为 py3k 做了很多库移植的工作。

InfoQ:当你将代码升级到 Python 3 的时候,有没有因为兼容性而产生严重的问题?

Virgil Dupras: 升级到 Python 3 时,你唯一可能遇到的大问题就是字符串和字节之间关系的问题。不过不用担心,只要在升级之前导入所有相关的 __future__ 模块就行了。除法可能也是一个问题,不过你不是已经用“from __future__ import division”解决了么?

字符串和字节的问题非常很棘手,在移植代码之前你得好好想想怎么使用字符串类型。比如,正则表达式只能用于匹配字符串,无法匹配字节。所以,如果之前你把字符串当做字节来用正则表达式解析的话,你就会遇到问题。

除了这种情况,字符串与字节的问题就很好解决了:注意字面值,检查所有的“open”调用,确认到底应该用二进制模式还是文本模式。

InfoQ:有没有在 Python 2 中你喜欢的,但是 Python 3 却没有的特性?

Virgil Dupras: 没有,这还是同一种语言,只是更好了。

更多关于跨平台界面开发的信息,请参考 Virgil 的文章Cross-Toolkit Software

查看英文原文:Reports from the Field: Python 3 with Hardcoded Software
Python架构语言 & 开发