推荐学习书目
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
pc10201
V2EX  ›  Python

真心觉得 python3 比 python2 好啊

  •  
  •   pc10201 · Mar 11, 2016 · 10075 views
    This topic created in 3754 days ago, the information mentioned may be changed or developed.
    每一个 pythoner 折腾过 python 2 的中文编码,虽然都已经习惯了~

    现在日常的使用,除了 scrapy 还没有完全兼容 python 3 外,其他的主流库基本都支持 python3 了~
    37 replies    2017-07-04 10:07:34 +08:00
    strahe
        1
    strahe  
       Mar 11, 2016
    反正我是一直追 3 的
    keenkiller
        2
    keenkiller  
       Mar 11, 2016
    更换的性价比太低。。
    zhouquanbest
        3
    zhouquanbest  
       Mar 11, 2016
    然并卵
    只能自己的 project 偷着乐
    virusdefender
        4
    virusdefender  
       Mar 11, 2016
    最近写爬虫用了下,确实没再遇到编码问题。但是以前的 web 项目仍然在继续使用 2 。

    发现 PyCharm 对 3 的支持不是很好,很多自动提示都没了,而且还有 bug 。
    glasslion
        5
    glasslion  
       Mar 11, 2016
    scrapy 已经支持 python3 了
    janxin
        6
    janxin  
       Mar 11, 2016
    现在其实对个人而言编码问题并没有这么严重(不做爬虫),实际上更换 Py3 之后性能没有任何提升反而有情况下性能下降是最大的升级阻碍,这个对线上系统而言完全不划算的生意。

    最后唠叨一下 fabric 啥时候开发完新版啊....
    initialdp
        7
    initialdp  
       Mar 11, 2016
    阻挡 3 的是兼容性,是企业已有项目的迁移成本。
    jy02201949
        8
    jy02201949  
       Mar 11, 2016
    毕竟 3 是为了解决 2 臃肿、编码等很多问题才诞生的
    raptor
        9
    raptor  
       Mar 11, 2016
    说一个 py3 的编码问题吧: logging
    默认输出到 console 的 logging 是采用系统编码,而直接写入 str(即 unicode)会出错,转成 utf-8 则变成 bytes ,在 console 上显示永远是不对的,只能用 FileHandler ,因为这个可以设置 encoding ,才能得到正确的结果。
    whisperzzzz
        10
    whisperzzzz  
       Mar 11, 2016
    (内心)旧的坑踩的差不多了……谁知道新的坑会有多少……
    (说出来的话) Python 2 真是好 TM 蠢啊(
    raptor
        11
    raptor  
       Mar 11, 2016
    还有一个编码相关的问题就是跟加密相关的函数,全都不支持 str(unicode),必须手工转成 bytes 才能用。
    MrEggNoodle
        12
    MrEggNoodle  
       Mar 11, 2016
    3 取代 2 是时间的问题,好像 py 团队对 2.7 的支持会持续到 19 年,然后全部转向 3 的了。只是现在企业就要看自己转变的性价比有多高, 3 会越来越好, 2 已经没有新特性引入了。其实 2.7 已经兼容了不少 3 的特性的了。
    congeec
        13
    congeec  
       Mar 11, 2016
    @janxin 性能? Python 3 最大的性能损失在字符串处理吧。另外好多 Python 3 效率更高的模块模块没有移植到 Python 2 ,比如 os.scandir 。 OrderedDict 在 3 里也用 C 重写了
    wizardoz
        14
    wizardoz  
       Mar 11, 2016
    单从语言的角度来讲当然是 Python3 比 Python2 好。但是有很多很有用的库尚不支持 Python3 ,所以很多时候只能选择 Python2
    neoblackcap
        15
    neoblackcap  
       Mar 11, 2016
    @raptor Python3 里面的 str 函数相当于 Python2 里面的 unicode ,加密函数之前都是用 str 也就是 Python3 里面的 bytes,因此需要类型转换也是很符合常理的。
    yy77
        16
    yy77  
       Mar 11, 2016
    关键是 pypy 很长时间都支持 python2 ,现在虽然有了 python3 的支持,但是对比 python2 的版本依然很不成熟。多少计算密集的应用和库能够放弃 pypy 啊。
    xchange
        17
    xchange  
       Mar 11, 2016   ❤️ 2
    现在公司所有项目都在用 Python 3.5 ,很开心
    ericls
        18
    ericls  
       Mar 11, 2016 via iPhone
    用了一年多 3 了 没遇见过任何问题 不知道那些说 3 很多不兼容的问题哪里来的
    ericls
        19
    ericls  
       Mar 11, 2016 via iPhone
    @wizardoz 这个说法不存在
    jugelizi
        20
    jugelizi  
       Mar 11, 2016
    新项目当然可以去用
    已有的去迁移成本未未知啊
    likuku
        21
    likuku  
       Mar 11, 2016
    遇到老系统只有 py3.1 ,结果好几种 mysql 模块支持的最低版本 3 都比 3.1 高,
    最后为了及时解决问题,还是直接用回 py2.7 。

    某些旧系统发行版最高也就 py3.1 了。
    fy
        22
    fy  
       Mar 11, 2016
    @virusdefender 并没有发现 pycharm 失灵…… pycharm 一直在跟进最新版本啊。
    python3.3 以后基本成熟,用的很开心
    virusdefender
        23
    virusdefender  
       Mar 11, 2016
    @fy 不是失灵,而是没有 Python2 智能了,不知道为什么
    mathgl
        24
    mathgl  
       Mar 11, 2016
    我在等 pypy
    ahxxm
        25
    ahxxm  
       Mar 11, 2016
    @virusdefender maybe you need to choose python3 interpretor? (shurufa huai le .. )
    virusdefender
        26
    virusdefender  
       Mar 11, 2016 via Android
    @ahxxm 我当然选了
    em3rge
        27
    em3rge  
       Mar 11, 2016
    @virusdefender then what kind of smart do you want?
    Pastsong
        28
    Pastsong  
       Mar 11, 2016
    我们都这么觉得
    em3rge
        29
    em3rge  
       Mar 11, 2016
    @virusdefender 我一直就只用 refactor 和自动补全,没有遇到过什么问题,感觉完全满足需求。。就写 2/3 兼容代码时候没有 type annotation 有时候会没提示
    virusdefender
        30
    virusdefender  
       Mar 11, 2016 via Android
    @em3rge 我写的 django
    em3rge
        31
    em3rge  
       Mar 11, 2016
    @virusdefender 试试用 def func(param: int) -> bool 这个语法
    zaishanfeng
        32
    zaishanfeng  
       Mar 11, 2016 via Android
    然而实际项目很少有人用 3 除了编码问题 真的没有必要换 再说了连个编码都搞不定 怎么艹
    Feiox
        33
    Feiox  
       Mar 12, 2016
    用 2 的好处,唉, pypy 啥时候支持 3.4+ 啊。。。
    gamexg
        34
    gamexg  
       Mar 12, 2016
    迁移麻烦,虽然 py3 过了测试,但是还是不敢迁移,测试不能覆盖所有情况。
    raptor
        35
    raptor  
       Mar 12, 2016
    @likuku 旧系统的确坑,换成 py2 有时也会被坑,比如某些系统里的 py2 居然还是 2.4 …
    不过不是太旧,能跑 docker 的系统还是可以有选择的。
    fbwfbi
        36
    fbwfbi  
       Mar 18, 2016
    一直用 python3 写了一年多的项目,之前 py2 的那些不兼容的地方反而忘了
    leafonsword
        37
    leafonsword  
       Jul 4, 2017
    django 官方建议用 Python 3,checkio 只支持 Python 3,是时候换到 Python 3 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5045 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 01:14 · PVG 09:14 · LAX 18:14 · JFK 21:14
    ♥ Do have faith in what you're doing.