8 年时间还不够消灭 python2 么? - V2EX
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 11070 次点击
    这是一个创建于 3539 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好多人问是用 python2 ,还是用 python3...
    75 条回复    2020-02-16 10:37:14 +08:00
    Tink
        1
    Tink  
    PRO
       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  
    PRO
       2016-02-05 20:07:05 +08:00 via iPhone
    SAE 还只支持 2 它换我就换
    zaishanfeng
        4
    zaishanfeng  
       2016-02-05 2010: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 吧
    vela
        11
    vela  
       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 最大的问题是性能,,可他们却整天再考虑加语法糖,比如新加的“@”表示矩阵乘法,不伦不类,我也真是服了。。
        57
    janxin  
       2016-02-07 10:45:56 +08:00 via Android
    @XIVN1987 这个毕竟对科学计算有帮助
    janxin
    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     Solana     2517 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:30 PVG 23:30 LAX 08:30 JFK 11:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86