V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jimmy2010
V2EX  ›  Python

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

  •  
  •   jimmy2010 · 2012-12-26 20:56:59 +08:00 · 5686 次点击
    这是一个创建于 4147 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始学编程,才发现编程语言也是在不断进化的。
    现在网上的python学习资料大多是python 2.x 版本的,刚开始没注意这么多,所以在python官网下载到的是最新的 3.x 版本的,然后跟着《Learn python the hard way》学习的时候才发现两者还是有很多区别的,虽然这些差别很容易在网上找到,但还是有些担心。

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

    问题有点多,提前感谢您的关注和回答。
    18 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2012-12-26 21:03:21 +08:00
    目前生产环境中基本上都是 Python 2.7。
    jimmy2010
        2
    jimmy2010  
    OP
       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
        3
    funagi  
       2012-12-26 21:40:07 +08:00
    目前遇到的生产环境大都是2.6.x,自己可定制的话一般都升到2.7.x,但有少数还是2.5.x因某些条件限制没有升级。
    而3.x的环境,我几乎没遇到过,也许是接触面太窄了吧。
    选择哪个版本关键要看你最终会在哪些版本平台上运行,而不是一味追求高版本。
    另外我觉得旧的移植到新的比反过来容易得多。
    jimmy2010
        4
    jimmy2010  
    OP
       2012-12-26 21:54:08 +08:00
    @funagi 嗯,我现在的目标是学会这门语言,版本应该不是最重要的,也许等我学会的时候,已经普遍用3.x了,哈哈
    funagi
        5
    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
        6
    nervouna  
       2012-12-26 22:10:52 +08:00 via iPhone   ❤️ 1
    我现在玩的是 2.7.3,写东西有很多现成的轮子。
    PotatoBrother
        7
    PotatoBrother  
       2012-12-26 22:23:39 +08:00
    2.7和3是平行开发的,应该不会取代
    wy315700
        8
    wy315700  
       2012-12-26 22:28:13 +08:00
    3.x就没见到有人用
    madebydup
        9
    madebydup  
       2012-12-26 22:29:18 +08:00 via iPhone
    新版本取代舊版本是必然的趨勢,這也只是時間的問題。

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

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

    值得注意的是,你現在開始使用python 2.x的話,也盡量採用已經被支持的3.x的語法,以後移植會減少一些成本。
    jimmy2010
        10
    jimmy2010  
    OP
       2012-12-26 22:42:21 +08:00
    @nervouna 轮子就是框架的意思吗
    @wy315700 可以理解,毕竟生产环境稳定第一
    @madebydup 嗯,谢谢你这么详细的回答。因为我现在完全是0基础(文科生。。),所以我也打算继续用3.x版本学习,等到把基础语法学完后,再根据情况去找一些简单的开源项目练习练习
    tioover
        11
    tioover  
       2012-12-26 23:19:24 +08:00 via Android
    @jimmy2010
    3有不少改进
    但其实差别不是很大 学习成本什么的也不会有什么增加
    2.7里面有不少3 的特性了
    其实学3也挺好
    aulara
        12
    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
        13
    jimmy2010  
    OP
       2012-12-27 00:20:51 +08:00
    @tioover
    @aulara 非常感谢两位提供的信息 :)
    huobazi
        14
    huobazi  
       2012-12-28 03:08:32 +08:00 via iPhone
    3喊了好些年了。
    unionx
        15
    unionx  
       2012-12-28 06:00:34 +08:00
    不委婉地说,3就没人用
    yegle
        16
    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
        17
    qiukun  
       2012-12-30 14:18:23 +08:00
    @yegle 有意思,要看是什么人学吧,还要目的是学什么。
    社区我觉得对于新手还是很重要的。
    Sukizen
        18
    Sukizen  
       2012-12-30 14:55:14 +08:00
    为什么不学习3呢。
    虽然说2.7是目前最多使用版本也最容易找到答案的版本。
    但是如果你具备2.7的开发能力,为什么不学习3呢,尽早接触,以便日后升级到新版本累积更丰富的经验。
    如果你python是0基础,为什么不学习3呢,先把python的基础了解一遍,并且用3做点项目,没有2.7的牵绊,不也是好事。况且编程的思路可以参考,代码可以研究。

    大家都在为3而准备着,为什么不学习3呢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   970 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 18:42 · PVG 02:42 · LAX 11:42 · JFK 14:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.