你看好python3吗?

回复内容:
就因为unicode,python3肯定能变成主流
在 3.0 时代我已经开始转向 python 3 来写自己用的各种脚本了,因为 python 2.x 的中文编码太纠结了。不过目前 python 3 的库还是太少,虽然越来越多的库开始支持了。另外,我写过 gae 程序,用的 python 2.5,用着非常不顺手。个人认为接下来一两年还是 python 2.6/2.7 用得最广泛,但终将被 3.x 所取代。我是看好 3.x 的发展的。
谢@胡小樱 邀,受宠若惊。python 嘛我两个版本都在用,主要用 python 2。现在大多数项目都是构建在 python 2 之上的吧,os x 自带的 python 解释器也是 2。个人感觉 3 和 2 用起来的主要区别就是 encoding 问题终于解决了,默认 unicode 了。就凭这一点,处理非英语字符串的时候方便好多好多。之前写一个通过 adb 向 android app 发送消息的脚本的时候,python 2 的中文字符串 encode/decode 出了好多奇奇怪怪的问题(比如说特定字符转换错误,别的字符都正常),至今无解,让我很无奈。另外一个改变是 print 终于变成函数了,这和其他语言保持了一致。要从 python 2 迁移到 3,最大的问题在于很多被广泛应用的库改名、合并、改动,比如说 2 时代被广泛用来做爬虫的 urllib2。网上搜索一下 python 爬虫,99% 的文章都在介绍 urllib2 的用法;但是 python 3 里面 urllib2 被合并到 urllib,接口什么的都不一样了,我也没找到任何关于迁移方法的文档。python 开发团队对于 2 和 3 的态度也是 3 难以推进的理由之一。两个版本并行开发,这不是明摆着让版本分裂愈演愈烈吗?不如早点学微软把 python 2 砍掉,长痛不如短痛,开发团队也免去了同时搞两个版本的麻烦。
我看好python4
如果你的工作和文本处理相关得多,那么还是推荐3啊..2.x的中文处理让你欲仙欲死

初学python的人在选择python版本的时候或许都会存在一些疑惑,到底选python2还是python3呢?或者更精确的说,是python2.7还是3.3呢(这两个版本是目前的主流)?这两个版本有什么不同?最近一段时间我在谷歌和so上看了很多人的观点,特地来总结一下,或许能解答此时此刻你心中的疑惑。

维基百科在python2.7和3.3这两个版本的不同上给出了非常详细的解答。用这两个版本都各有好处,这取决于你想要得到什么。但是,总体来说“python 2.x is legacy, python 3.x is the present and future of the language”

关于最主要的区别,或者说最明显的区别,就是print函数了,在py2中,我们直接可以print “hello world!”,但是在py3中的语法是print (“hello world!”)。

另外,py2有更好的库函数的支持,很多库只支持py2而不支持py3。所以这是选择python2的一个非常强大的优势。

但是许多人,包括许多python的开发者都是坚定不移的py3支持者,archlinux也采用py3为默认版本。为什么呢?因为python3才是符合未来潮流的版本,越来越多的新特性只会支持py3,这样就显得py2有点停滞不前。py3才是未来的主流。

那么说了这么多,作为一个初学者,抑或是一个开发者,怎样选择python的版本呢?我觉得so上的一个回答说得非常好:

“python 3 is a nicer and more consistent language, but, there is very limited third-party module support for it. this is likely to be true for at least a couple of years more. so, all major frameworks still run on python 2, and will continue to do so for a significant time. therefore, if you learn python today, you should learn python 2, because that is the version you are going to end up actually using.”

翻译:“python3 是一个更棒更持久的语言,但是,支持它的第三方库很有限。这种情况很可能在未来的几年一直持续下去。所以,几乎所有的框架在现在以及未来的一段时间内都会在py2上运行。因此如果你是一个初学者,那么你应该学python2,因为那才是你最终要用的。”

虽然这个人给出了选择py2的答案,但是最终的决定权还是在你手中,毕竟这是一个没有定论的答案。

3.0肯定没人用的,现在的3.x的最新release已经是3.2 了 http://python.org/download/releases/3.2/我个人可能会等到3.3正式release开始尝试使用python 3.x进入production 至少也要等到常用的库都支持python 3.x之后
不存在看好不看好的问题,3是大势所趋,不过主流的库都还不支持3。等django,mysqldb都支持了,用3的时代也就到来了。反正2.7是2.x的最后一个版本。
这和看好不看好有什么关系?python3的不向下兼容是python发展的扬弃的结果。非常决绝有力的决定,给python注入了更强的生命力。
考古队挖的一手好坟= =如果是当时提问的时间点的话(2011-03-23),我对 python 3 持悲观态度,因为那时候的python 3版本是3.2,最最蛋疼的是unicode的u前缀字符串在python 3是syntaxerror,我知道这些小事可以在 2to3 中自动修复,但是相当多的人,至少包括我和sqlalchemy的作者,都非常不喜欢2to3,我是认为 2to3 干涉了我对代码的控制,出了问题还要看是我的问题还是 2to3 自己的问题,单元测试加上 2to3 什么的麻烦死了,而且在最近的 sqlalchemy 0.9 的 what’s new 中相当高调的提到了targeting python 2.6 and up now, python 3 without 2to3what’s new in sqlalchemy 0.9?这一点的顺序甚至高于更有实质意义的 c extensions supported on python 3,当然你也可以理解为重要的是 2.6+这一点第二蛋疼的是 python 2.7 几乎有所有的 python 3.0 ~ 3.2 的新功能的 backport ,这样你让我有什么动力去用python 3 呢?而且当时 n 多库不相容,尤其是 paramiko ,到现在还不相容,又不像 mysqldb 有替代-_-||| ,上层的 fabric 也被牵连不过3.3之后非常不同了,首先最最蛋疼的 u”” 的 syntaxerror 没有了,然后终于有新特性了有木有,generator delegation 功能让我流口水( ̄﹁ ̄),当然纯粹给generator用有点大才小用,果不其然,3.4 (现在还在rc阶段) 的 asyncio 就用的是这种新语法 ( ̄﹁ ̄) 失态了。。。在 3.3 发布后我才终于有动力修改我的代码,准备 python 3 的相容性等待迁移,当然。。。虽然unittest都过了还是要观望一下-_-|||

Posted in 未分类

发表评论