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

[x 经] 现在已经是 Python 3 的时代了么?

  •  3
     
  •   elviscai · 2016-09-19 09:01:19 +08:00 · 7582 次点击
    这是一个创建于 2988 天前的主题,其中的信息可能已经有所发展或是发生改变。
    零基础开始学 Python ,主要场景是快速构建 WebApp 。
    56 条回复    2016-09-21 13:05:20 +08:00
    qisuker
        1
    qisuker  
       2016-09-19 09:05:23 +08:00   ❤️ 2
    2016 绝对是分水岭, pip 包安装量里 py3 已经超过 py2

    最流行的包里,几乎已经全部支持 py3 了: http://py3readiness.org/
    jimzhong
        2
    jimzhong  
       2016-09-19 09:05:30 +08:00
    Django, Flask, Tornado 都已经支持 Python3 了。
    目前一定要用 Py2 的只剩 twisited 了把。
    petelin
        3
    petelin  
       2016-09-19 09:10:47 +08:00 via Android
    我说个体验,去年写的代码,那时候装包好多只能在 py2,无奈。今天要加一个新功能,将一个字典 url 编码,要指定为 gbk 格式的。 py2 上 urllib 和 requests 相关方法都缺少 encoding 参数,明显 py3 是升级版嘛, 2 不死才怪。
    raptium
        4
    raptium  
       2016-09-19 09:14:04 +08:00 via Android
    @petelin py2 的 str 已经是编码过的了,没必要再指定 encoding 了
    newbieo0O
        5
    newbieo0O  
       2016-09-19 09:21:34 +08:00
    那些不升级的对第三方包依赖比较严重,还有一个就是懒。
    whwq2012
        6
    whwq2012  
       2016-09-19 09:21:57 +08:00 via Android
    @petelin 萌新表示 py 2.7 的编码没问题啊, encode 和 decode 就已经很好用了啊
    petelin
        7
    petelin  
       2016-09-19 09:26:36 +08:00 via Android
    额,我倒没想到这个,这样的话我必须为每一个字符串都指定编码,可不可行我不知道,编码完了都是二进制,他如何知道我原来编码是什么,我目标编码是什么?就算可行,这个地方加一个 encoding 依然有必要啊,我并不想每一个字符串都指定格式,他只需要搞成我需要的格式就行了,而且 str 和 unicode 都应该能作为参数。

    另外, Py2 下声明字符串还是要加一个 u 的。个人习惯。
    prondtoo
        8
    prondtoo  
       2016-09-19 09:28:53 +08:00
    kingcos
        9
    kingcos  
       2016-09-19 09:32:04 +08:00
    怎么感觉最近 Python 的帖子怎么这么多= =

    问题都替我问完了。。。

    看来有必要看看 Python 3 的了,刚拿 2.7 爬了些图片= =
    Kabie
        10
    Kabie  
       2016-09-19 09:45:45 +08:00
    @prondtoo twisted 都支持 3 了?真是有生之年。。。
    beimenjun
        11
    beimenjun  
       2016-09-19 09:54:21 +08:00
    最近出版的书籍已经开始 3 写,并且一般都明确不推荐 2 了。
    eloah
        12
    eloah  
       2016-09-19 09:58:17 +08:00
    @jimzhong twisted 早就支持 py3 了啊......而且 3.3 带的 asyncio 基本可以替代 twisted 了
    qiukun
        13
    qiukun  
       2016-09-19 10:01:47 +08:00
    cool 希望 ruby 能赶上(施主您还是 elixir 吧
    leavic
        14
    leavic  
       2016-09-19 10:39:33 +08:00
    公司服务器上的还是 2.4 ,偶尔写个脚本都想砸电脑,连 with statement 都没有啊。
    fds
        15
    fds  
       2016-09-19 10:43:35 +08:00
    @leavic 同情。可以考虑自己下个 3 偷偷用。
    aisk
        16
    aisk  
       2016-09-19 10:44:36 +08:00
    现在新开项目已经都是 Python3 的了
    leavic
        17
    leavic  
       2016-09-19 10:46:47 +08:00
    @fds 哈哈哈哈哈哈,做 IC 的,内部网络在物理上和外网隔绝。
    lcc4376
        18
    lcc4376  
       2016-09-19 10:55:38 +08:00
    py3 一定要的
    huybery
        19
    huybery  
       2016-09-19 11:16:58 +08:00
    为什么我一直觉得 2/3 没有多少区别呢?难道不是半个小时就能完美切换么
    felixzhu
        20
    felixzhu  
       2016-09-19 11:19:49 +08:00
    supervisor 也没有完美支持 3 吧
    sylecn
        21
    sylecn  
       2016-09-19 12:01:02 +08:00   ❤️ 1
    今年开始,默认新项目都切换到 python 3 了。

    各种平台、软件和库对 python 3 的支持会越来越好。最流行的库会保持同时支持 2 和 3 ,但是小一点的库以后也许就只有 python 3 的支持了。

    python 3 每个新的小版本都在加速这个转化过程。因为这个语言的一切新活力都在 python 3 里面了。 python 2 已经是明日黄花。现在各种 backport 的努力只是因为历史原因。但是总有东西是没有办法 backport 到 2 的,比如 await/async syntax 。

    另外,对于大项目, 2 转化到 3 不是小时级别能完成的事,起码要按天来算。转化坑还是挺多的。对于单元测试不完整,或者没有单元测试的项目,强烈建议就不要转了,转好了估计跑的时候会有很多问题。
    scipio
        22
    scipio  
       2016-09-19 12:20:03 +08:00
    去年开始入 Python 的坑,上手学的就是 Py3 。看到这些讨论,我很欣慰~
    Geoion
        23
    Geoion  
       2016-09-19 12:23:59 +08:00
    最近 QQ 群里被很多新手问编码的问题,赶紧推荐了一波 py3 ,问问题的人明显少了很多
    CarlWangCn
        24
    CarlWangCn  
       2016-09-19 12:35:41 +08:00
    protobuf, 很难切换到 3
    Trim21
        25
    Trim21  
       2016-09-19 12:41:54 +08:00 via Android
    @Geoion 再安利一下 chcp 65001 ,又能少一大些
    sylecn
        26
    sylecn  
       2016-09-19 12:47:00 +08:00
    @CarlWangCn 官方新版已经支持了。官方没支持之前也有第三方发布的支持 python 3 的库。 bytes 和 str 分离对 protocol buffer 是更有利了,这个库本身支持 python 3 本来也不难。

    https://github.com/google/protobuf/issues/7
    https://pypi.python.org/pypi/protobuf/3.0.0b2
    kaneg
        27
    kaneg  
       2016-09-19 13:44:48 +08:00
    今年好不容易把产品中的 Jython2.5 升级到 Jython2.7. 如果都跑到 3 上去,让压根就没有 3.0 的 Jython 情何以堪。
    markx
        28
    markx  
       2016-09-19 13:49:32 +08:00
    希望各社区要吸取经验,升级不能太激进啊,不然迁移成本太高用户不买帐。
    mikicomo
        29
    mikicomo  
       2016-09-19 17:06:11 +08:00
    @markx python 社区估计也就这么一次大动作,以后也不会这么来了吧, 4 开始都会做好对 3 的向后兼容,可能是以前社区的 dalao 觉得 2.x 问题太多,设计不优美,干脆切了重来,结果各位 dalao 也是蛋疼了这么多年 23333
    ry_wang
        30
    ry_wang  
       2016-09-19 19:40:23 +08:00
    supervisor 这么多年了是到死也不打算支持了么
    ansible 这浓眉大眼的竟然也不支持。。。。。
    workwonder
        31
    workwonder  
       2016-09-19 19:53:42 +08:00 via Android
    @ry_wang supervisor 不是可以用 systemd 替代码,后者已经成为多数 Linux 发行版的新选择。
    YvesX
        32
    YvesX  
       2016-09-19 21:04:31 +08:00
    撑过来就是好事。
    guyskk
        33
    guyskk  
       2016-09-19 23:17:26 +08:00 via Android
    新造的轮子不少是只支持 py3 的,写同时兼容 2 和 3 的代码太蛋疼了, Python 3 is the future 。
    ad0be
        34
    ad0be  
       2016-09-19 23:57:15 +08:00
    从廖雪峰的 Py3.5 开始看着学的~感觉 Py3 是趋势
    neoblackcap
        35
    neoblackcap  
       2016-09-20 00:06:03 +08:00
    感觉 3.5 好的 aync/await 实在是优势很明显的特性,很多人都用了,而且加上标准库里面的 asyncio 模块,自己写一个高性能异步框架也是分分钟的事情。实在没有理由留恋 2.7
    SlipStupig
        36
    SlipStupig  
       2016-09-20 00:27:02 +08:00
    宁愿选择 Golang 也不转 Py3 , py3 根本就没什么优势啊
    ooh
        37
    ooh  
       2016-09-20 04:58:21 +08:00 via Android
    想当年我敲 hello world ,报错一个星期,还是去老表家玩,老表告诉我是怎么回事 当年我就敲了个 print('hello world') 而已,现在老表做编译器方面,我做 PHP 方面,那也是我们唯一一次谈论编程...
    chenqh
        38
    chenqh  
       2016-09-20 08:06:37 +08:00   ❤️ 1
    为什么我觉得 3 是个史前巨坑。。 async/await 配套的库不知道要能弄多久呢。。
    在说了。。 async/await 只能提高 web 效率而已,像我这种只会用框架的人来说, async/await 有什么用?
    fhefh
        39
    fhefh  
       2016-09-20 08:29:24 +08:00
    先 mark~~~
    dsg001
        40
    dsg001  
       2016-09-20 08:54:28 +08:00
    gevent , scrapy 都支持 py3 了,而且现在的 3.5 直接 32 、 64 整合,自动选择
    nellace
        41
    nellace  
       2016-09-20 08:54:42 +08:00
    nice 这下终于不用看着 2 代码 翻译成 3 了
    evanmeng
        42
    evanmeng  
       2016-09-20 09:08:36 +08:00
    看领域,比如如果你想用 py 做运维,那么三个最常用的 py 运维库 Ansible Salt 和 Fabric 都不支持 3 ,而且看上去永远不会支持的样子。
    tjxiter
        43
    tjxiter  
       2016-09-20 09:16:34 +08:00
    2 换到 3 的使用,不是 so easy ?
    66beta
        44
    66beta  
       2016-09-20 09:22:59 +08:00
    哇,厉害,搞得我都想重新开始学了...重新。。。
    tairan2006
        45
    tairan2006  
       2016-09-20 09:44:38 +08:00
    今年可以用 3 了
    jason19659
        46
    jason19659  
       2016-09-20 09:48:19 +08:00
    一直以为早就是 3 的时代了
    whnzy
        47
    whnzy  
       2016-09-20 11:29:30 +08:00
    @jason19659 公司还是用 2
    sunwei0325
        48
    sunwei0325  
       2016-09-20 11:34:15 +08:00
    fabric 还是 python2
    wujunze
        49
    wujunze  
       2016-09-20 11:35:08 +08:00
    新手 python 学的 py3.5
    v2dxt
        50
    v2dxt  
       2016-09-20 11:47:38 +08:00
    @SlipStupig 看到那些 GoPATH 就还是继续学 Python3 ,除非 GoPATH 能更方便设置
    SlipStupig
        51
    SlipStupig  
       2016-09-20 12:18:11 +08:00
    @v2dxt 这些都是个人习惯问题, java 还要配置 jdk_home , python 要强制空格.....习惯就好
    littleshy
        52
    littleshy  
       2016-09-20 15:04:23 +08:00
    以为 3 不用再担心编码问题了,没想到 str 和 bytes 也是让我转得发疯……
    syslot
        53
    syslot  
       2016-09-20 18:19:51 +08:00
    python3 有哪些比较好的书?
    connection
        54
    connection  
       2016-09-20 23:42:23 +08:00
    2015 暑假那时候我看 github 上的大部分代码还是 2
    2016 暑假这时候我看 github 上的大部分代码就是 3 了
    raphaelsoul
        55
    raphaelsoul  
       2016-09-21 08:53:13 +08:00
    @ry_wang 已经放弃 supervisor 了, systemd 好用还稳定。 supervisor 之前遇上过找不到 pid 文件的诡异事情。现在,包括 nodejs 的项目我也不信任 forever 这种东西了,直接用系统层级的东西更加可靠
    josephok
        56
    josephok  
       2016-09-21 13:05:20 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.