欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

你看好 Python 3 吗?

程序员文章站 2022-06-04 13:24:58
...

回复内容:

就因为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 了 python.org/download/rel

我个人可能会等到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 2to3
What’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都过了还是要观望一下-_-|||