前两天在写python代码的时候,发现了一个问题。因为要使用email模块,使用

了其中一项导入语句:from email.mime.text import MIMEText,在python2.5下

面运行的很正常,可是到python2.4下面却运行失败,说是导入库失败。最后找

来找去,发现在低版本下面可以用from email.MIMEText import MIMEText进行

代替。而且,这样做的话也是兼容高版本的。看了一下里面的模块,发现在

python2.5下面:

Python 2.5.2 (r252:60911, Jan 8 2009, 12:17:37)

[GCC 4.3.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import email

>>> dir(email)

['Charset', 'Encoders', 'Errors', 'FeedParser', 'Generator', 'Header',

'Iterators', 'LazyImporter', 'MIMEAudio', 'MIMEBase', 'MIMEImage',

'MIMEMessage', 'MIMEMultipart', 'MIMENonMultipart', 'MIMEText',

'Message', 'Parser', 'Utils', '_LOWERNAMES', '_MIMENAMES', '__all__',

'__builtins__', '__doc__', '__file__', '__name__', '__path__',

'__version__', '_name', 'base64MIME', 'email', 'importer',

'message_from_file', 'message_from_string', 'mime', 'quopriMIME',

'sys']

而在python2.4下面:

Python 2.4.4 (#2, Apr 5 2007, 20:11:18)

[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import email

>>> dir(email)

['__all__', '__builtins__', '__doc__', '__file__', '__name__',

'__path__', '__version__', 'message_from_file', 'message_from_string']

差别还是蛮大的。

最近很让人郁闷的一件事情是,python的上下兼容性做得并不好。许多版本之间

并不相通。python2.4和2.5的小版本之间差别都如此大,更不要说大版本了。前

几天有同事问,现在python3.0为什么不用啊,不是不用,用的话许多东西都要

重新改写,而且许多第三方库现在都是针对python2.4/2.5的,很少有针对3.0的,

第三方库升不上去,别的地方肯定就不好升了。再如django,每一件小版本之间

的升级,也会导致你的代码重写,如0.96到1.0之间,代码不能拿过来就用,还

得改来改去。虽然说现在3.0代码更严谨了,而且不像c和c++那样,背上历史的

包袱,但是,没有向下兼容性,还是容易加大代码维护工作量。哎,说到这里,

真是让人既爱且恨啊。

简谈python的向下兼容性问题

阅读(2663) | 评论(1) | 转发(0) |

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐