對了有個Pies 最新版本2.5.0 是py 2和3 的兼容層。 詳見開源中國 oschina.net リン 发表于 2013/12/24 20:40:00 |
如果已经决定把工作环境转移到python3的话,其实寻求一个兼容层意义就不大了
猫自己写的web框架是基于python3的,同时兼容2.7,实际上兼容性的代码总共就是个位数的行,而且都集中在IO操作方面,个人觉得有经验的开发者,编码时就能有效避免兼容问题
更何况现在更多的情况是2to3的情况,极少出现3to2的情况
还有一些问题是兼容层无法直接搞定的历史问题,例如使用相当频繁的print;在2.x时代print是作为语句使用的,但是到了3.x为了适合函数式编程print变为了函数,尽管2.6以后python2也允许print("something")这样的语法,但是print作为语句的特性并没有改变,例如下面的表达式在python3里面是成立的,但是2却报错:
y
and print(
"z")
为了实现兼容就需要定义一个近似的函数
def xprint(
*arg,
**darg):
#do something这个实现不仅麻烦,低效,而且今后程序的部署也对兼通层产生了强烈的依赖,成为下一个历史遗留问题。
其实换个思路,解决办法其实很简单:不去使用这样的用法,至少现在不要去使用 》《
现在python3遇到的最大囧境是:很多项目几乎都停留在2.x,不论人员还是代码,这使得我们看到的很多第三方3.x库都是2.x环境下开发,然后用2to3转换到3。由于3.x推进缓慢,加上又有2to3这样本身已经很成熟的工具,所以短时间内想让各个项目组转移到3.x环境下进行开发就不太现实。
虽然大多数人目前都还是看好python3的未来,但是这一个未来真正到来还是有些遥远的