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

python3 新特性这么多,你常用的是什么?

  •  
  •   Te11UA · 2020-10-09 10:43:11 +08:00 · 6845 次点击
    这是一个创建于 1539 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每一个大版本新特性有很多,但实际上工程中倒是用得很少,想问问大伙儿用得比较顺手的新特性都有哪些呢?
    第 1 条附言  ·  2020-10-09 11:18:24 +08:00
    发现有点误解,我不是指对比 python2 和 python3,我想问的是 python3 的版本更迭,比如 python3.8/3.9 带来的一些新特性
    50 条回复    2020-11-17 16:49:31 +08:00
    yaoye555
        1
    yaoye555  
       2020-10-09 10:46:06 +08:00
    3 不是启用很久了么,目前我们生产上用的是.6 上下兼容的挺不错
    676529483
        2
    676529483  
       2020-10-09 10:55:16 +08:00
    type hint,偶尔用:=
    lithiumii
        3
    lithiumii  
       2020-10-09 10:57:43 +08:00 via Android
    开始用 py 之后更新的特性里用最多的是 f string,但那也是好久之前的特性了,3.8 里的 :=偶尔用
    linvaux
        4
    linvaux  
       2020-10-09 10:59:52 +08:00 via iPhone
    @676529483 type hint +1,我们还在用 3.7 海象运算符没法用
    Te11UA
        5
    Te11UA  
    OP
       2020-10-09 11:11:32 +08:00
    @yaoye555 指的是 py3 的每一个大版本 比如说 3.8 的 cached_property 啥的
    wayslog
        6
    wayslog  
       2020-10-09 11:15:59 +08:00
    type hint 。。。海象基本不用。。。
    mashpolo
        7
    mashpolo  
       2020-10-09 11:15:59 +08:00
    f-string,少写了不少代码,挺方便的
    xiaolinjia
        8
    xiaolinjia  
       2020-10-09 11:16:25 +08:00
    type hint,dataclass
    smgui
        9
    smgui  
       2020-10-09 11:18:26 +08:00
    type hint 和 f-string,应该大多数人都是这两个
    ideacco
        10
    ideacco  
       2020-10-09 11:21:06 +08:00
    f-string 是挺方便的
    TimePPT
        11
    TimePPT  
       2020-10-09 11:23:48 +08:00
    f-string +1
    aladdindingding
        12
    aladdindingding  
       2020-10-09 11:24:38 +08:00
    asyncio 吧 python2 gevent 文档太少
    hyperbin
        13
    hyperbin  
       2020-10-09 11:34:06 +08:00 via Android
    typing dataclass f-string
    rglee
        14
    rglee  
       2020-10-09 11:39:36 +08:00 via Android
    f-string 用的最多,type hint 也会用
    soraping
        15
    soraping  
       2020-10-09 11:40:12 +08:00
    f-string 和 type hint 就这两个最顺手
    lithbitren
        16
    lithbitren  
       2020-10-09 11:40:38 +08:00
    f-string 是真的多,:=过了新鲜期就不咋用了
    whileFalse
        17
    whileFalse  
       2020-10-09 12:00:56 +08:00
    map 可以保持顺序这点挺好的。
    wuwukai007
        18
    wuwukai007  
       2020-10-09 12:19:25 +08:00 via Android
    f 可以嵌套写 f,确实不错
    yaoye555
        19
    yaoye555  
       2020-10-09 12:25:05 +08:00
    @Te11UA 哈哈,那必须是 f-string 比%好用太多,其他的都没什么刚需
    dalei
        20
    dalei  
       2020-10-09 12:28:08 +08:00
    f-string type-hint asyncio
    qdzzyb
        21
    qdzzyb  
       2020-10-09 12:29:36 +08:00
    大家都用 asyncio 做什么
    xuboying
        22
    xuboying  
       2020-10-09 12:52:36 +08:00   ❤️ 3
    3.8 有个共享内存,感觉是突破 gil 的最佳曲线救国工具,已经用了好多次了,没有人提么?
    chengxiao
        23
    chengxiao  
       2020-10-09 13:31:02 +08:00
    还停留在 3.6,3.8 感觉一堆包都装不上
    leavic
        24
    leavic  
       2020-10-09 13:42:02 +08:00
    要不看你附言的话,我就想说函数式 print 了。

    也就 type hint 有时候用用,自以为会提高点效率,反正我也没啥感觉。
    xiaolinjia
        25
    xiaolinjia  
       2020-10-09 13:46:20 +08:00
    @xuboying 我想请教下,共享内存是不是基于之前的 memoryview 的。
    keepeye
        26
    keepeye  
       2020-10-09 13:48:40 +08:00
    asyncio type-hint
    youngce
        27
    youngce  
       2020-10-09 13:48:49 +08:00
    f-string asyncio
    youthfire
        28
    youthfire  
       2020-10-09 13:49:43 +08:00
    f-string 和 asyncio
    imn1
        29
    imn1  
       2020-10-09 14:15:34 +08:00
    和 2 比的话,肯定是 print()和 range()最多
    3.8 没上,因为很多 module 还没测试,不敢随便升
    3.7 新特性用得最多是 dataclass
    janxin
        30
    janxin  
       2020-10-09 14:28:51 +08:00   ❤️ 1
    3.8 是性能最好的版本 XD
    具体参考 3.9 版本的 Release Note 中的 benchmark

    3.8 新增了一些扩展,比如 f-string 调试方便的{=args}方式,functools.cached_property 装饰器,typing.TypedDict 做配置之类的检查,其实除了性能,我觉得跟 3.7 区别没那么大。海象运算符没用过....

    3.9 其实也没这么大区别,目前看起来比较有帮助的是 type hint 体验上的提升,不需要引入 typing.Dict 之类的直接使用。目前来看 3.9 和 3.10 最大的变化是会在 C-API 上的,这个对我目前的使用来说影响不是很大。对未来引入第三方 JIT 实现之路表示有点看好。
    0bit
        31
    0bit  
       2020-10-09 16:47:20 +08:00
    f-string,很好用
    TypeError
        32
    TypeError  
       2020-10-09 16:51:29 +08:00
    fstring
    Enum➕Unicode 变量名挺好用的,不用到处使用 Dict
    fy
        33
    fy  
       2020-10-09 17:04:13 +08:00
    async/await asyncio typehints dataclass f-string
    no1xsyzy
        34
    no1xsyzy  
       2020-10-09 18:59:16 +08:00
    @janxin 9-10 的变化似乎可能将允许支持宏?我不搞 PL 具体也不懂,但 PEG 似乎对高级宏更友好。
    fkdtz
        35
    fkdtz  
       2020-10-09 19:52:11 +08:00
    f-string 是不是跟 php 字符串变量解析一个意思
    xuboying
        36
    xuboying  
       2020-10-09 20:50:40 +08:00
    @xiaolinjia 不太了解,sharedmemory 强调的是调用操作系统的内存服务,官方做了跨平台的封装。当然传递的具体东西可能需要 memoryview 的"底层化"
    abersheeran
        37
    abersheeran  
       2020-10-09 22:15:53 +08:00
    Type hint,很自由,上线的项目里关键部位都会用上,开源项目基本都是打满的。
    ManjusakaL
        38
    ManjusakaL  
       2020-10-09 22:33:16 +08:00
    fstring, type hint
    milkpuff
        39
    milkpuff  
       2020-10-09 23:26:25 +08:00
    f-string dataclass enum
    type-hint 还能帮助代码提示
    black11black
        40
    black11black  
       2020-10-10 05:40:32 +08:00 via Android
    @xuboying 能举个例子吗
    yeyu123
        41
    yeyu123  
       2020-10-10 11:41:35 +08:00
    fstring 一直用一直爽,
    := 其次 ,
    type hint 偶尔, 慢慢加入,
    async 看项目
    puyangsky
        42
    puyangsky  
       2020-10-10 14:21:04 +08:00
    看 type hint 越看越像 golang···有没有同感的
    no1xsyzy
        43
    no1xsyzy  
       2020-10-10 15:53:51 +08:00
    @puyangsky 没有,怎么看都更像是 Pascal
    当然,如果你接触过的静态语言只有 golang 一个,那就这样吧。
    xuboying
        44
    xuboying  
       2020-10-12 11:05:12 +08:00   ❤️ 1
    @black11black 我需要做一个快速响应的图像相关的软件( GUI base ),有几个模块负责图像处理,一个模块负责 UI,在 3.8 之前我尝试了线程(有 GIL 问题)或者多进程序列化传输数据,性能都很差,差点转其他语言来写了,忽然发现 3.8 支持内存共享,就继续用 python 写了。效果挺好的。
    iqxd
        45
    iqxd  
       2020-10-14 15:05:09 +08:00
    @xuboying 3.8 支持了进程间共享内存之后多进程的性能提高很多
    iqxd
        46
    iqxd  
       2020-10-14 15:08:48 +08:00
    @janxin 那个 benchmark 是开发期间测试的,用 release 的最终版 3.9.0 在 win10 下和 3.8.6 对比了下,还是 3.9 跑的稍快一些,
    janxin
        47
    janxin  
       2020-10-14 16:16:13 +08:00
    @iqxd 这个我倒没测试,我还以为 3.9.0 正式版就是这样的
    iqxd
        48
    iqxd  
       2020-10-15 09:38:12 +08:00
    @janxin 今天我看 cpython git 日志,发现有开发者重新测了,修改了这个 Release Note 里的 bench 结果,看上去和 3.8 差别不大
    raymanr
        49
    raymanr  
       2020-10-16 22:09:28 +08:00
    f-string
    矩阵乘法运算符 @

    async 一直也没用明白
    killva4624
        50
    killva4624  
       2020-11-17 16:49:31 +08:00
    最喜欢 f-string 和 type hint 。前者比 format 更舒服更优雅。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5494 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:46 · PVG 15:46 · LAX 23:46 · JFK 02:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.