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

2017 年 5 月的现在,还有什么理由不使用 Python 3?

  •  
  •   cxz · 2017-05-05 23:18:26 +08:00 · 10376 次点击
    这是一个创建于 2519 天前的主题,其中的信息可能已经有所发展或是发生改变。
    标题是一个疑问句,各位童鞋请作答。

    其实是最近发现 aws lambda 最近终于支持 python 3 了,不用 2 的理由又少了一个。
    大部分库也支持 3 了 https://python3wos.appspot.com/
    还有什么理由(借口),或者其他什么坑的?比如有没有什么领域大家都用 2,或者某些教程还大都是 2 之类的?
    64 条回复    2017-05-11 22:33:33 +08:00
    valkyrja
        1
    valkyrja  
       2017-05-05 23:22:16 +08:00 via Android
    历史原因
    panda1001
        2
    panda1001  
       2017-05-05 23:23:43 +08:00 via Android
    centos
    PythonAnswer
        3
    PythonAnswer  
       2017-05-05 23:25:57 +08:00   ❤️ 1
    俺从 3.0 一路用过来的. py3 支持者.
    哈哈, 要说最大的理由. py3 没 py2 快啊
    suixn
        4
    suixn  
       2017-05-05 23:27:30 +08:00 via Android
    因为服务器是 centos6
    neoblackcap
        5
    neoblackcap  
       2017-05-05 23:27:40 +08:00
    @panda1001 找运维,叫他们编译打一个包上去
    vghdjgh
        6
    vghdjgh  
       2017-05-05 23:27:48 +08:00
    gyp
    whwq2012
        7
    whwq2012  
       2017-05-05 23:39:12 +08:00 via Android
    网页里面有的库后面的 py3k 是啥意思啊
    knightdf
        8
    knightdf  
       2017-05-05 23:40:11 +08:00
    说实话,我也想用 3 看看,主要是现在公司开发全部基于 2,但是话又说回来,出了快要停止支持,还有什么理由一定要用 3 ?
    lxy
        9
    lxy  
       2017-05-05 23:44:08 +08:00
    →_→ Fabric
    janxin
        10
    janxin  
       2017-05-05 23:50:24 +08:00
    fabric,gyp,两座大山
    janxin
        11
    janxin  
       2017-05-05 23:50:53 +08:00
    @PythonAnswer 3.6.1 已经比 2 快了
    billlee
        12
    billlee  
       2017-05-05 23:55:47 +08:00   ❤️ 2
    「用 python 3 出 bug 了查不出来怎么办?」
    kiwi95
        13
    kiwi95  
       2017-05-05 23:57:27 +08:00 via Android
    2010, 2012, 2014, 2016 年也都有人提出过同样的问题
    JJaicmkmy
        14
    JJaicmkmy  
       2017-05-06 00:17:54 +08:00
    python -m SimpleHTTPServer 用多了,升级之后不习惯。
    misaka19000
        15
    misaka19000  
       2017-05-06 00:18:36 +08:00   ❤️ 2
    不用 2 的理由又少了一个。

    不是应该又多了一个吗?
    iptux
        16
    iptux  
       2017-05-06 00:18:45 +08:00 via Android   ❤️ 1
    "string".encode("base64").decode("base64") == "string"
    "string".encode("gzip").decode("gzip") == "string"
    xiahei
        17
    xiahei  
       2017-05-06 00:21:12 +08:00 via Android
    @JJaicmkmy Python3 的 "python -m http.server" 比你这个麻烦很多?
    clavichord93
        18
    clavichord93  
       2017-05-06 00:22:22 +08:00
    机器学习啊。。。
    strawhat7
        19
    strawhat7  
       2017-05-06 00:23:37 +08:00
    @PythonAnswer py2 比 py3 快?能简要说下理由不,不是抬杠哈。
    JJaicmkmy
        20
    JJaicmkmy  
       2017-05-06 00:24:51 +08:00
    @xiahei 不是麻烦,是习惯了之前的,经常输入了之后找不到 module 才想起来现在改掉了。
    mathgl
        21
    mathgl  
       2017-05-06 00:29:07 +08:00
    @strawhat7 py2 普遍比 3 快一点,但是那点差异不会造成什么影响。最主要是 2to3 根本问题 GIL 之类并没有解决,导致很多人都转 Go 了。
    PythonAnswer
        22
    PythonAnswer  
       2017-05-06 00:31:04 +08:00
    @janxin 有具体评测数据吗? 望告知, 多谢!


    @strawhat7 这是 py3 久久不能替代 py2 的最重要原因, 升级反而速度会损失. 因为 py3 的很多 PyObject 占用资源要比 py2 的高. 比如 str 变成 unicode. 龟爹重大战略失误, 我觉得就是太在意语言细节, 搞不兼容搞出了一条邪路, 而不是把社区大多数精力放在提高 CPython 解释器速度上. (当然我一直用 py3 因为经常处理各国文字).

    直到最近 py3.6 的字典对象, 比 py2 速度高了 3 倍多. py3 的速度是在提高, 但不知道有没有全面超过 py2.
    raptor
        23
    raptor  
       2017-05-06 01:01:52 +08:00
    看在 async/await 的份上,至少 py3.5
    terence4444
        24
    terence4444  
       2017-05-06 01:06:51 +08:00 via iPhone
    吃了 unicode 以外,并没有足够的理由让用户升级现有项目。

    而且各种库,并不是“ py3 的库更好更多” 而是 “现在 xxx 库也开始支持 py3 了”。
    bccber
        25
    bccber  
       2017-05-06 01:09:20 +08:00
    只会用来写爬虫 2 和 3 没区别
    Geoion
        26
    Geoion  
       2017-05-06 01:25:56 +08:00
    mysql-python
    276562578
        27
    276562578  
       2017-05-06 01:32:16 +08:00 via Android
    对我来说最大的阻碍是 3 的 print 要加括号,十分不爽(ノ`⊿´)ノ其实 2 和 3 对我来说没什么区别
    ibegyourpardon
        28
    ibegyourpardon  
       2017-05-06 01:35:54 +08:00   ❤️ 2
    那我给个理由吧。

    有几十万已经写好的 Python 2 的代码扔在那里。

    我用 Python 3 在外部写点服务,加点东西,对接起来,也能用。

    我用别的东西写,也能这样操作。

    当然有时候没那么方便,或者习惯,能复用的,或者可能侵入代码的,就用 Python 2 写。

    上面说的性能什么之类的,我从来没考虑过。

    我就是不思进取,不肯前进,守旧,喜欢用习惯的东西。。。

    为什么要如此不思进取呢?因为如果 Python 2 是个要进故纸堆的东西的话,那么维护的这套系统本身也是,早晚要退役。但在此刻,这套系统仍然能发挥价值,就像 Python 2 仍然是有价值和有着不可替代的部分一样。

    Python 3 和 Go 可能在很多地方更好,也许全面碾压 Python 2 的那一天很快就来了,但就算到了那天,用 Python 2 也不是什么丢人的事。

    新东西大多数都是好的,但作用应该是开疆拓土,而不是取代老的。

    就像我现在比我爹力气大能干活,不代表我就该淘汰他。
    KirkZheng
        29
    KirkZheng  
       2017-05-06 01:44:03 +08:00 via Android
    @misaka19000 我也刚想说
    aminic
        30
    aminic  
       2017-05-06 05:52:36 +08:00 via Android
    再用 3 了,大概很快 4 就要 out 了吧
    zmj1316
        31
    zmj1316  
       2017-05-06 06:33:29 +08:00 via Android
    因为 4 还没出
    dsg001
        32
    dsg001  
       2017-05-06 08:28:42 +08:00
    老项目懒得折腾,新项目坚定 py3
    clino
        33
    clino  
       2017-05-06 09:11:17 +08:00 via Android
    懒。。。
    ooh
        34
    ooh  
       2017-05-06 09:20:48 +08:00
    苦于没找到一种完美的 bencode
    sagaxu
        35
    sagaxu  
       2017-05-06 10:49:14 +08:00
    @terence4444 XX 库要开始不支持 py2 了,这类理由够不够?比如 django 和 ipython
    PythonAnswer
        36
    PythonAnswer  
       2017-05-06 11:46:24 +08:00
    提升 2 倍速度,大家都用了。能省一半资源呢。
    litter123
        37
    litter123  
       2017-05-06 12:39:47 +08:00
    @clino 一样,233
    chroming
        38
    chroming  
       2017-05-06 13:30:17 +08:00 via iPhone
    理由是公司在用 2
    riverxs
        39
    riverxs  
       2017-05-06 13:35:25 +08:00 via Android
    JS 笑而不语😂
    a87150
        40
    a87150  
       2017-05-06 13:40:50 +08:00
    @JJaicmkmy python -m http.server 8000 还更容易打了
    cloud107202
        41
    cloud107202  
       2017-05-06 14:19:57 +08:00
    最近重构一个 python2+twisted 的项目,感觉 qps 也就 300 左右,很忧伤。。

    有人对 twisted tornado node.js 写的 restful 的 benchmark 比例有个大概了解么?
    cxbats
        42
    cxbats  
       2017-05-06 14:30:19 +08:00 via Android
    2 和 3 是两门不同的语言,你这就好像问为什么还有人在用 C 一样
    fy
        43
    fy  
       2017-05-06 14:48:13 +08:00
    看你们讨论的好像还是 2 是主流版本一样,Excuse me????
    Blazings
        44
    Blazings  
       2017-05-06 16:43:44 +08:00
    @PythonAnswer "py3 没 py2 快啊" 你从哪里得出的结论
    botman
        45
    botman  
       2017-05-06 17:06:37 +08:00
    其实这个主要还是看应用场景吧,我个人偏向用 2,印象中我个人接触到的一些细分领域的资料和源码搜一搜只看见过 2,遇到一些比较特殊的需求但自己又不想造轮子的情况下大多都能在 2 中找到现成的包和工具,其中有的代码虽然比较老但也只要轻度修改一下就能用,目前手里项目和工具也都是 2 开发的用了这么久稳定性也有保障,就算出了问题 2 发展这么久了社区搜一搜基本立马就能找到解决方案,用 3 的话重构和测试太麻烦不是有特别的理由的话纯属徒增 bug 浪费自己时间,我用 3 也只会用来跑跑部分仅只支持 3 的工具,虽然现在很多主流的框架和工具大多都支持 3 了但是还是有相当数量不太主流但一旦要用到的时候会很方便的包和工具。关注 3 很久了但总感觉 3 变来变去的不够靠谱,我讨厌这种不稳定的状态。仅凭上述这些理由我个人至少在未来 5 年内是不会转到 3 的。
    julyclyde
        46
    julyclyde  
       2017-05-06 18:51:55 +08:00
    我记得 fabric 有个 fork 叫 fabric3
    tairan2006
        47
    tairan2006  
       2017-05-06 19:28:53 +08:00
    3 没有从根本上解决什么问题…
    goodryb
        48
    goodryb  
       2017-05-06 21:04:07 +08:00
    爱用啥用啥,哪有这么多为什么。矫情?
    tttty
        49
    tttty  
       2017-05-06 21:53:06 +08:00
    感觉 2 和 3 没有太多本质上的区别啊...
    messense
        50
    messense  
       2017-05-06 22:46:16 +08:00
    zhengxiaowai
        51
    zhengxiaowai  
       2017-05-06 22:51:37 +08:00
    领导说不能用
    mio4kon
        52
    mio4kon  
       2017-05-07 11:41:23 +08:00
    不用 2 的理由又少了一个 /doge
    PythonAnswer
        53
    PythonAnswer  
       2017-05-07 12:26:41 +08:00 via Android
    @Blazings 您自己搜搜呗。py3 比 py2 慢,做个实验跑 timeit 也能看出来。
    owt5008137
        54
    owt5008137  
       2017-05-07 12:50:45 +08:00
    目前哪个企业发行版或长期支持版默认用 python3 ?
    fy
        55
    fy  
       2017-05-07 14:21:38 +08:00 via Android
    @owt5008137 Ubuntu server,arch
    fluyy
        56
    fluyy  
       2017-05-07 21:35:37 +08:00 via iPhone
    服务器上还是 2.6。你敢升级?
    owt5008137
        57
    owt5008137  
       2017-05-07 22:07:42 +08:00
    @fy 好吧,刚刚看了下,原来两个都有软链接
    owt5008137
        58
    owt5008137  
       2017-05-07 22:08:25 +08:00
    @fy 好吧,刚刚看了下,原来 python2 和 python3 的两个版本都有软链接到 python 的
    hl
        59
    hl  
       2017-05-08 13:20:10 +08:00
    @JJaicmkmy 一开始总记不住 SimpleHTTPServer 大小写,后来用了 3,http.server 直接顺畅了许多,哈哈哈
    oglop
        60
    oglop  
       2017-05-09 09:32:38 +08:00 via Android
    视觉特效行业还在用 2.7 因为大家商量好了 都不升,见此处 http://www.vfxplatform.com , 2019 年再升 3
    qsnow6
        61
    qsnow6  
       2017-05-09 16:57:31 +08:00
    2 到 3 除了默认 unicode 外,一共也没改什么东西,大部分都是类库的位置变更了。
    https://www.zhihu.com/question/19698598/answer/12704353
    clino
        62
    clino  
       2017-05-10 09:23:54 +08:00
    @fluyy 用 virtualenv 隔离出一个 py3 的环境没压力
    purrgil
        63
    purrgil  
       2017-05-11 20:35:51 +08:00
    fluyy
        64
    fluyy  
       2017-05-11 22:33:33 +08:00 via iPhone
    @clino 机器上连 py3 都没有。virtualenv 这种场景下也心累,我直接放弃这种方案了。我有两个 web 服务是 py3 搭的,依赖比较干净。我得先在编译机上编译 py3,而且一些库要静态链接,然后再打包到线上机器。但是大多数的工具都是跑在 py2 下,不用折腾。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3369 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:43 · PVG 08:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.