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

真心觉得 python3 比 python2 好啊

  •  
  •   pc10201 · 2016-03-11 11:03:14 +08:00 · 9105 次点击
    这是一个创建于 3171 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每一个 pythoner 折腾过 python 2 的中文编码,虽然都已经习惯了~

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

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

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

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