A009: 使用__future__

来源:互联网 发布:淘宝双十一的营销策略 编辑:程序博客网 时间:2024/06/06 18:33

转自: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820023084e5263fe54fde4e4e8616597058cc4ba1000


Summary: 就是让Python 2.7的环境,模拟出Pythbon

Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。

从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xxx''xxx'是完全一致的,而在2.x中以'xxx'表示的str就必须写成b'xxx',以此表示“二进制字符串”。

要直接把代码升级到3.x是比较冒进的,因为有大量的改动需要测试。相反,可以在2.7版本中先在一部分代码中测试一些3.x的特性,如果没有问题,再移植到3.x不迟。

Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。

# still running on Python 2.7from __future__ import unicode_literalsprint '\'xxx\' is unicode?', isinstance('xxx', unicode) #Tureprint 'u\'xxx\' is unicode?', isinstance(u'xxx', unicode) #Trueprint '\'xxx\' is str?', isinstance('xxx', str) #False, in Python 3, it is Unicode.print 'b\'xxx\' is str?', isinstance(b'xxx', str) #Ture

0 0
原创粉丝点击