python3 新特性这么多,你常用的是什么? - V2EX
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 7301 次点击
    这是一个创建于 1834 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每一个大版本新特性有很多,但实际上工程中倒是用得很少,想问问大伙儿用得比较顺手的新特性都有哪些呢?
    第 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
    linvux  
       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  
    PRO
       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
    EnumUnicode 变量名挺好用的,不用到处使用 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     Solana     5668 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 06:08 PVG 14:08 LAX 23:08 JFK 02:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86