关于Python版本的问题,新的会取代旧的吗?

2012-12-26 20:56:59 +08:00
 jimmy2010
刚开始学编程,才发现编程语言也是在不断进化的。
现在网上的python学习资料大多是python 2.x 版本的,刚开始没注意这么多,所以在python官网下载到的是最新的 3.x 版本的,然后跟着《Learn python the hard way》学习的时候才发现两者还是有很多区别的,虽然这些差别很容易在网上找到,但还是有些担心。

我想请教的是,
我该怎样去选择版本?
新的版本最终会取代旧的版本么?
如果我用新版本的语法写出的代码能方便地移植到旧版本上去吗?
还有我看到网上说3.x版本比2.x版本性能要慢xx%云云,这是为什么呢?(参考: http://wenku.baidu.com/view/2eda64d476a20029bd642d64.html

问题有点多,提前感谢您的关注和回答。
5853 次点击
所在节点    Python
18 条回复
Livid
2012-12-26 21:03:21 +08:00
目前生产环境中基本上都是 Python 2.7。
jimmy2010
2012-12-26 21:20:21 +08:00
@Livid 谢谢回答,我又去看了一遍官网,才发现有这样一句话:
If you don't know which version to use, try Python 3.3. Some existing third-party software is not yet compatible with Python 3; if you need to use such software, you can download Python 2.7.x instead.
所以我还是继续用3.3吧,反正新的会取代旧的吧。
不过,因为开发语言版本升级所产生的问题,会给程序员带来较大的烦恼么?我想在这里的各位一定遇到过这种情形吧,能否谈谈应对的经验。
funagi
2012-12-26 21:40:07 +08:00
目前遇到的生产环境大都是2.6.x,自己可定制的话一般都升到2.7.x,但有少数还是2.5.x因某些条件限制没有升级。
而3.x的环境,我几乎没遇到过,也许是接触面太窄了吧。
选择哪个版本关键要看你最终会在哪些版本平台上运行,而不是一味追求高版本。
另外我觉得旧的移植到新的比反过来容易得多。
jimmy2010
2012-12-26 21:54:08 +08:00
@funagi 嗯,我现在的目标是学会这门语言,版本应该不是最重要的,也许等我学会的时候,已经普遍用3.x了,哈哈
funagi
2012-12-26 22:04:05 +08:00
@jimmy2010 我觉得3.X普及还需要好几年的时间,不至于要学那么久吧……
另外就是现在2.x的学习资料数量远远大于3.x;
2.x遇到问题google一下基本就能找到解决办法,3.x很多问题可能搜索不到帮助答案,3.x学习成本可能会因此比学2.x大得多。
nervouna
2012-12-26 22:10:52 +08:00
我现在玩的是 2.7.3,写东西有很多现成的轮子。
PotatoBrother
2012-12-26 22:23:39 +08:00
2.7和3是平行开发的,应该不会取代
wy315700
2012-12-26 22:28:13 +08:00
3.x就没见到有人用
madebydup
2012-12-26 22:29:18 +08:00
新版本取代舊版本是必然的趨勢,這也只是時間的問題。

如果你是學習基本的語法,建議從3.x開始學習,這符合基本的發展趨勢。

如果你需要通過一些簡單的項目上手,建議從2.x開始學習,畢竟有現成的開源項目做參考。

值得注意的是,你現在開始使用python 2.x的話,也盡量採用已經被支持的3.x的語法,以後移植會減少一些成本。
jimmy2010
2012-12-26 22:42:21 +08:00
@nervouna 轮子就是框架的意思吗
@wy315700 可以理解,毕竟生产环境稳定第一
@madebydup 嗯,谢谢你这么详细的回答。因为我现在完全是0基础(文科生。。),所以我也打算继续用3.x版本学习,等到把基础语法学完后,再根据情况去找一些简单的开源项目练习练习
tioover
2012-12-26 23:19:24 +08:00
@jimmy2010
3有不少改进
但其实差别不是很大 学习成本什么的也不会有什么增加
2.7里面有不少3 的特性了
其实学3也挺好
aulara
2012-12-27 00:00:11 +08:00
2.7是2的最后一个版本,api不会再有变动,python-dev上的核心开发员已经达成共识。
@funagi @jimmy2010 下个月发布的Django1.5就会支持python3,有Django的支持普及必定加速。两年后Django1.7将不再支持python2。

3解决了2的设计硬伤,比如字符串默认为unicode就是一项很棒的改进。
jimmy2010
2012-12-27 00:20:51 +08:00
@tioover
@aulara 非常感谢两位提供的信息 :)
huobazi
2012-12-28 03:08:32 +08:00
3喊了好些年了。
unionx
2012-12-28 06:00:34 +08:00
不委婉地说,3就没人用
yegle
2012-12-30 13:36:50 +08:00
初中时,小破学校里的下课铃偶尔就不响。那时大家也没带手表啥的,手机更是没影。晚自习到下课的时间,大家估摸着要下课了但还是没下课铃声,开始骚动。这个时候总会有一两个聪明人说:其他班还没人出来呢,肯定没下课,老老实实坐着吧

在Python3的选择上,很多人也是这个意思:其他项目还没开始用Python3呢,还是老老实实用Python2吧


另附几个链接:
Python项目支持Python3的列表 http://py3ksupport.appspot.com/
如何写向前兼容的Python代码 http://lucumr.pocoo.org/2011/1/22/forwards-compatible-python/
qiukun
2012-12-30 14:18:23 +08:00
@yegle 有意思,要看是什么人学吧,还要目的是学什么。
社区我觉得对于新手还是很重要的。
Sukizen
2012-12-30 14:55:14 +08:00
为什么不学习3呢。
虽然说2.7是目前最多使用版本也最容易找到答案的版本。
但是如果你具备2.7的开发能力,为什么不学习3呢,尽早接触,以便日后升级到新版本累积更丰富的经验。
如果你python是0基础,为什么不学习3呢,先把python的基础了解一遍,并且用3做点项目,没有2.7的牵绊,不也是好事。况且编程的思路可以参考,代码可以研究。

大家都在为3而准备着,为什么不学习3呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/55916

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX