推荐学习书目
› 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 · 10470 views
    This topic created in 3895 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
    strahe
    Mar 11, 2016
    1
    反正我是一直追 3 的
    keenkiller
    keenkiller
    Mar 11, 2016
    2
    更换的性价比太低。。
    zhouquanbest
    zhouquanbest
    Mar 11, 2016
    3
    然并卵
    只能自己的 project 偷着乐
    virusdefender
    virusdefender
    Mar 11, 2016
    4
    最近写爬虫用了下,确实没再遇到编码问题。但是以前的 web 项目仍然在继续使用 2 。

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

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

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