V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Dec 26, 2012 · 6671 views
    This topic created in 4872 days ago, the information mentioned may be changed or developed.
    刚开始学编程,才发现编程语言也是在不断进化的。
    现在网上的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 replies    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
    PRO
       Dec 26, 2012
    目前生产环境中基本上都是 Python 2.7。
    jimmy2010
        2
    jimmy2010  
    OP
       Dec 26, 2012
    @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  
       Dec 26, 2012
    目前遇到的生产环境大都是2.6.x,自己可定制的话一般都升到2.7.x,但有少数还是2.5.x因某些条件限制没有升级。
    而3.x的环境,我几乎没遇到过,也许是接触面太窄了吧。
    选择哪个版本关键要看你最终会在哪些版本平台上运行,而不是一味追求高版本。
    另外我觉得旧的移植到新的比反过来容易得多。
    jimmy2010
        4
    jimmy2010  
    OP
       Dec 26, 2012
    @funagi 嗯,我现在的目标是学会这门语言,版本应该不是最重要的,也许等我学会的时候,已经普遍用3.x了,哈哈
    funagi
        5
    funagi  
       Dec 26, 2012
    @jimmy2010 我觉得3.X普及还需要好几年的时间,不至于要学那么久吧……
    另外就是现在2.x的学习资料数量远远大于3.x;
    2.x遇到问题google一下基本就能找到解决办法,3.x很多问题可能搜索不到帮助答案,3.x学习成本可能会因此比学2.x大得多。
    nervouna
        6
    nervouna  
       Dec 26, 2012 via iPhone   ❤️ 1
    我现在玩的是 2.7.3,写东西有很多现成的轮子。
    PotatoBrother
        7
    PotatoBrother  
       Dec 26, 2012
    2.7和3是平行开发的,应该不会取代
    wy315700
        8
    wy315700  
       Dec 26, 2012
    3.x就没见到有人用
    madebydup
        9
    madebydup  
       Dec 26, 2012 via iPhone
    新版本取代舊版本是必然的趨勢,這也只是時間的問題。

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

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

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

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

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


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

    大家都在为3而准备着,为什么不学习3呢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5537 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 03:10 · PVG 11:10 · LAX 20:10 · JFK 23:10
    ♥ Do have faith in what you're doing.