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
lenovo
V2EX  ›  Python

8 年时间还不够消灭 python2 么?

  •  
  •   lenovo · 2016-02-05 19:54:20 +08:00 · 10654 次点击
    这是一个创建于 3197 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好多人问是用 python2 ,还是用 python3...
    75 条回复    2020-02-16 10:37:14 +08:00
    Tink
        1
    Tink  
       2016-02-05 20:02:00 +08:00
    现在能上 3 的都上 3 了,不上的估计都是不敢太动老代码的
    k9982874
        2
    k9982874  
       2016-02-05 20:05:10 +08:00 via iPhone
    为啥也消灭 python2 啊,我觉得 2 挺好的
    YUX
        3
    YUX  
       2016-02-05 20:07:05 +08:00 via iPhone
    SAE 还只支持 2 它换我就换
    zaishanfeng
        4
    zaishanfeng  
       2016-02-05 20:10:34 +08:00
    大量的历史代码不可能消灭的。 除非出个把 2 自动转换成 3 的方法,把 pip 里的全部替换掉,这样才有希望
    JustNormal
        5
    JustNormal  
       2016-02-05 21:47:36 +08:00
    就一个 MAC 系统,就消灭不了 Python2 。
    liqingcan
        6
    liqingcan  
       2016-02-05 21:47:55 +08:00 via Android
    作为一个初学者,我直接上 3 。
    RqPS6rhmP3Nyn3Tm
        7
    RqPS6rhmP3Nyn3Tm  
       2016-02-05 21:57:03 +08:00 via iPad
    真希望 Mac 能内置 Python 3
    每次把程序拷给别人都要装一次 Homebrew 和 Python 3 真是烦死了
    zhouquanbest
        8
    zhouquanbest  
       2016-02-05 21:57:19 +08:00
    帝国主义亡我之心不死
    Victor215
        9
    Victor215  
       2016-02-05 21:58:43 +08:00
    因为公司用的还是 py2 ……
    pimin
        10
    pimin  
       2016-02-05 22:00:54 +08:00
    我最近总算看到了 3 的呼声
    从前都是这么说的:
    如果只是想玩玩就学 3 吧
    boywang004
        11
    boywang004  
       2016-02-05 22:05:13 +08:00
    楼主图从哪里来的?
    dragonszy
        12
    dragonszy  
       2016-02-05 22:18:26 +08:00
    哪位能够告知一下 awesome-python 中到底哪些项目只支持 2 ?或者哪些大型开源项目不支持 3 的?
    lenovo
        13
    lenovo  
    OP
       2016-02-05 22:21:39 +08:00
    fy
        14
    fy  
       2016-02-05 22:35:13 +08:00
    bytes 和 str 的分界当然是一个重要原因,不过我觉得这是一个好的改动。

    python3.3 以前的 3 很多细节不够好(向下兼容 2 时需要做额外工作,例如 u'1', ur'123'不能用)

    我觉得最重要的原因是,发布 3 的时候没有号称提速 100%
    jarlyyn
        15
    jarlyyn  
       2016-02-05 23:17:45 +08:00
    消灭 python2 需要的是 python4
    myid
        16
    myid  
       2016-02-05 23:22:55 +08:00 via iPhone
    不够。 Python 2 一直会存在下去.
    用 Haskell 吧,免除这种烦恼。
    sinxccc
        17
    sinxccc  
       2016-02-05 23:28:51 +08:00
    历史代码问题是无解的

    很多人还在不得不写 perl 呢

    还有设备跑着 COBOL 呢
    mimzy
        18
    mimzy  
       2016-02-05 23:35:35 +08:00   ❤️ 2
    icedx
        19
    icedx  
       2016-02-05 23:47:21 +08:00
    关于 COBOL 语言的鲜活的例子 发生在美国五角大楼
    http://www.solidot.org/story?sid=35541
    paulagent
        20
    paulagent  
       2016-02-05 23:57:59 +08:00
    你这是典型的程序员思维。 作为决策者,你要想的是为啥换。 只有一条,就是不换就不行了。否则都是扯淡。

    你能因为说 py3 比 py2 好就把所有的程序都换成 3 ? 你敢保证换成 3 不出任何问题? 出了问题损失的钱你来陪吗?退一万步,就算换成 3 没有任何问题,改写程序的费用谁出?
    hjc4869
        21
    hjc4869  
       2016-02-06 00:01:39 +08:00
    不向下兼容,怎么可能完全消灭……
    yech1990
        22
    yech1990  
       2016-02-06 00:34:06 +08:00 via Android
    因为 2 一直也在升级啊, 2.5 到 2.7 的差距不一定比 2.7 到 3 的小啊
    vh2h
        23
    vh2h  
       2016-02-06 00:41:10 +08:00 via Android
    8 年时间能消灭 xp 的话,没问题
    jakes
        24
    jakes  
       2016-02-06 01:32:34 +08:00 via Android
    因为 mac 的默认是 2 ,然后开始写的时候就用的 2 ,现在代码多了懒得改成 3 了。。。
    ericls
        25
    ericls  
       2016-02-06 01:54:27 +08:00 via iPhone
    已经用 3 一年多了 没什么感觉
    jakiepaper
        26
    jakiepaper  
       2016-02-06 02:00:50 +08:00 via iPhone
    为什么要消灭 2 ?难道在 2 下写的轮子都要重新写?为什么要这么折腾啊?
    janxin
        27
    janxin  
       2016-02-06 07:37:41 +08:00
    如果 Python3 比 2 能够 speedup 1x - 2x 甚至更多, 2 - 3 年之内这个问题就搞定了。在 Python3 最初甚至比 Python2 还慢的。
    现在 Python3 速度没什么变化,语法改了这么多,没有利益驱动老东西谁愿意动。
    movtoy
        28
    movtoy  
       2016-02-06 09:11:19 +08:00
    再过 5 年也消灭不了。不是每个人都有好运气随时能用上最新的版本。


    大部分都需要维护 n 年前的代码。


    人家是请你来解决问题的,而不是用某某语言的,当然也不是来让你用某某版本的。
    ye10010
        29
    ye10010  
       2016-02-06 09:32:57 +08:00
    OS 默认啥,可能就学啥了,看这些大厂吧
    ytmsdy
        30
    ytmsdy  
       2016-02-06 10:58:09 +08:00
    现在主要是有一部分 lib 不支持 python3 ,就算是支持的 python3 的坑也比较多。
    稳定的开发者都不愿意去填这个坑吧。
    mcwanderer
        31
    mcwanderer  
       2016-02-06 11:33:41 +08:00
    python2 惹你了?
    tairan2006
        32
    tairan2006  
       2016-02-06 12:17:42 +08:00 via Android
    py3 并没有什么特别吸引人的地方啊…字符串问题熟了也没啥了。很多特性也可以靠第三方库实现。

    python2 转 python3 还没有 python2 转 go 的吸引来的大…
    beibeijia
        33
    beibeijia  
       2016-02-06 12:25:15 +08:00
    无论是教程还是库 py3 都没 py2 的多 而且 py3 就性能上也没多少提升 好多主流发行版的 linux 也都停留在 py2 于是为了用个 py3 各种切换各种配置各种重写 真的很浪费时间 唉 每次看到 python 的这两个版本真特么蛋疼 搞不懂作者到底怎么想的 搞好向后兼容会怀孕不成!?
    fy
        34
    fy  
       2016-02-06 12:32:18 +08:00
    说 py3 库不多的都想当然了,事实并非如此。

    说 2 是主流,现在风向已经变了,新项目中不敢说 3 占优势,至少 2 、 3 是 55 开

    而每一个真正认真用过 py3 的人都能理解为什么难以向下兼容

    至于 python4 ?官方的解释是说, py4.0 是 py3.9 之后的下一个版本,仅此而已。

    py4 不会破坏向下兼容性(向下兼容 py3 )
    SharkIng
        35
    SharkIng  
       2016-02-06 12:39:42 +08:00
    现在上一个 Win XP 版本推出应该也块 8 年了吧,那么还有多少人在用 XP 呢,答案是不少...
    QK8wAUi0yXBY1pT7
        36
    QK8wAUi0yXBY1pT7  
       2016-02-06 13:01:51 +08:00
    如果有人愿意写一个 2/3 自适应的版本,并附带 2to3 自动转换功能,那么就快了。
    coetzee
        37
    coetzee  
       2016-02-06 13:31:32 +08:00
    对于升级语言, Java 表示不服,你看看 Java 5 到现在已经 12 年了,依然活的很顽强,大多数企业都是 Java5 吧。 Java 7 到现在也有四年时间了,你看看普及率。所以越是追求稳定,越是不追求变化,而且切新版本的成本太高了,这个帐谁来付,本来没有问题,升级之后出现的问题,锅谁来背。很多技术,只能靠着新项目去采用推进力。
    hooluupog
        38
    hooluupog  
       2016-02-06 13:52:57 +08:00
    应该问, 8 年时间 python 3 相比 python 2 就提升这么一点点么?
    破坏了向后兼容性,但提升的又不是十分明显,这是造成 py 这么分裂的原因。
    hooluupog
        39
    hooluupog  
       2016-02-06 13:57:19 +08:00
    java 5 有了泛型, java 6 , 7 提升不大(期间 sun 出问题一直不更新了),直到 8 勉强算个大更新,但相比推迟到 9 , 10 的东西(jigsaw, value type 等等), java 8 也不算特别大的更新, java 总体上属于偏保守。
    python 当初做出 py3k 那个决定还是很有魄力的,只可惜 py3 相比 py2 解决掉的问题太少了。
    FrankFang128
        40
    FrankFang128  
       2016-02-06 14:18:12 +08:00 via Android
    NodeJS 笑而不语:我都到 5 了。
    ericls
        41
    ericls  
       2016-02-06 15:05:19 +08:00 via iPhone
    真没看出来 py3 和 py2 差别有多大
    minsheng
        42
    minsheng  
       2016-02-06 16:17:25 +08:00 via iPhone
    @myid 要是楼主听你的就完了,每年都要给新的 GHC 重新适配一下,一不小心升级个 LTS 版本还会发现开发机内存不够 aeson 死活编译不过去。每年暑假都要把 ICFP 的 paper 读一遍,看到一个新思路手馋也得实现一下吧,永无安宁之日😂😂😂
    Delbert
        43
    Delbert  
       2016-02-06 18:18:49 +08:00 via Android
    @BXIA Mac 内置了 python3 的
    RqPS6rhmP3Nyn3Tm
        44
    RqPS6rhmP3Nyn3Tm  
       2016-02-06 18:27:46 +08:00 via iPad
    @Delbert 有吗?
    mathgl
        45
    mathgl  
       2016-02-06 19:15:43 +08:00
    @tairan2006 有 aio 。也算是卖点了。
    kaneg
        46
    kaneg  
       2016-02-06 19:31:10 +08:00 via iPhone
    个人无所谓,想换就换,可是在公司大多人都是人微言轻
    knightdf
        47
    knightdf  
       2016-02-06 20:39:02 +08:00
    没觉得有啥我必须得换 3 啊, 2 用着挺好的啊
    WispZhan
        48
    WispZhan  
       2016-02-06 21:13:13 +08:00
    再等四、五年 python 4 (没记错的话应该是 2020 年或者 2022 年吧?) 出来都不会被消灭。就像 java 5 、 java 6 一样。
    loveminds
        49
    loveminds  
       2016-02-06 23:54:42 +08:00
    迭代成本太高了
    skydiver
        50
    skydiver  
       2016-02-07 00:51:05 +08:00
    @SharkIng xp 都推出 15 年了……你也太低估 xp 的年龄了吧。。
    其实 win7 都出来快 8 年了……
    mactaew
        51
    mactaew  
       2016-02-07 01:21:13 +08:00 via iPhone
    只有我想到了 php5 么
    JerningChan
        52
    JerningChan  
       2016-02-07 01:57:01 +08:00
    我覺得,穩定好用就可以了,好像,現在如果不是一個新項目開發時,用了新的 centos6/7
    人家一般都不會去把 centos5 update 到 6/7 的
    python 也一樣...不然,那麼多代碼,一旦現在測試時沒事,線上的換了,才出現了些突發問題,而且發現了衹能換會 python2 才能解決時...你說怎麼辦?之前我那個 centos6.7 也是,我在 6.5 時,用 hostapd 到了 6.7 後就默認有個 bug...
    而且用 redhat 的補丁又不能順利打上...
    SharkIng
        53
    SharkIng  
       2016-02-07 03:44:25 +08:00
    @skydiver 不对不对,他说的是 Python 3 八年怎么还没有提到 Python 2 ,所以应该按照 Python 3 的 2007 年算到现在 8 年时间。 所以同理消灭 XP 应该按照 XP 的下一代也就是 Vista 出来的时间算,也就是 2006 年,或者也可以按照 Win 7 (也就是 Vista 的下一代, 2009 年)出来的时间算,到现在也基本上是 9 年(或者 7 年)

    我的意思是, XP 的下一代或者下下一代都除了这么多年了,但是 XP 还是没有被“消灭”
    linux40
        54
    linux40  
       2016-02-07 09:15:36 +08:00 via Android
    2 也在更新啊。。。
    qian19876025
        55
    qian19876025  
       2016-02-07 09:19:09 +08:00
    楼主这种肉体毁灭者 真是惨无人道
    XIVN1987
        56
    XIVN1987  
       2016-02-07 09:27:24 +08:00
    我觉得 Python3 (或者 Python4 )想快速取代 Python2 只有一个办法:性能提升 5 倍,然后就可以告诉老板升级 Python 可以省掉 80%的服务器,,这样就算不兼容要重写老板都会同意,,

    Python 最大的问题是性能,,可他们却整天再考虑加语法糖,比如新加的“@”表示矩阵乘法,不伦不类,我也真是服了。。
    janxin
        57
    janxin  
       2016-02-07 10:45:56 +08:00 via Android
    @XIVN1987 这个毕竟对科学计算有帮助
    bramblex
        58
    bramblex  
       2016-02-07 11:01:29 +08:00
    @janxin

    这种语法糖帮助实在是微乎其微……

    他们真要用 python 高科学计算,自己搞一个 DSL 翻译到 Python 还比在 python 上面直接搞来得靠谱
    fy
        59
    fy  
       2016-02-07 11:21:31 +08:00
    @XIVN1987 这个语法糖啊对性能基本就没影响,也没有单独划分为一个符号优先级。他们搞科学计算的表示一颗赛艇,那我也就跟着资慈。
    secondwtq
        60
    secondwtq  
       2016-02-07 14:44:09 +08:00
    我觉得前端开发者有一样的话要说...
    clino
        61
    clino  
       2016-02-07 14:47:21 +08:00 via Android
    所以跳崖式升级就是傻 x
    nicevar
        62
    nicevar  
       2016-02-08 00:40:00 +08:00
    python 自己挖的坑,慢慢填吧
    Neveroldmilk
        63
    Neveroldmilk  
       2016-02-08 08:51:44 +08:00
    C#都出来几十年了,也没见消灭 C++。
    luoyetx
        64
    luoyetx  
       2016-02-08 14:38:52 +08:00
    一直用的 Python2 感觉 3 没啥可以吸引我的地方,我主要是拿 Python 处理处理数据
    withrock
        65
    withrock  
       2016-02-08 20:17:14 +08:00
    几乎一直在用 python2 , python3 最多能用百分之一吧.
    Narcissu5
        66
    Narcissu5  
       2016-02-09 11:39:56 +08:00
    @coetzee 现在稍微新一点的库都要 1.6 了,还在用 1.5 的早晚要坑。何况 1.5 连安全更新都没有了

    都说要维护既有代码好吧这个可以理解,但是新项目还要上 2 还要鼓励别人去学 2 这是要闹哪样。
    atpking
        67
    atpking  
       2016-02-09 11:46:42 +08:00
    主要是因为 linux 大多数带 python2 吧
    zky001
        68
    zky001  
       2016-02-09 16:08:24 +08:00
    python2 为什么要消灭,我觉得消灭至少 18 年。
    meoow
        69
    meoow  
       2016-02-09 23:08:45 +08:00
    @Neveroldmilk 说笑的吧?看来你既不懂 C++也不懂 C#。 C++和 C#既没有直接联系也不是继承关系
    Mark24
        70
    Mark24  
       2016-02-10 20:36:15 +08:00
    公司还用 2 ,个人应该用 3 了
    还被编码烦的不够么!?
    laosb
        71
    laosb  
       2016-02-11 20:44:43 +08:00
    @XIVN1987 这不是 PHP 的方法么 2333333
    zonghua
        72
    zonghua  
       2016-02-12 00:47:45 +08:00 via iPhone
    @hooluupog 还多了最有用的元信息
    qwertyio12368
        73
    qwertyio12368  
       2016-02-13 21:46:40 +08:00
    我现在用的就是 python3 啊
    SpicyCat
        74
    SpicyCat  
       2016-02-17 12:54:40 +08:00
    参考 IPv4 , COBOL
    dingyaguang117
        75
    dingyaguang117  
       2020-02-16 10:37:14 +08:00
    最近正在升级 Python3, 得益于目前项目已经被拆分,所以一个个升级压力并不大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2759 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:23 · PVG 23:23 · LAX 07:23 · JFK 10:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.