推荐学习书目
› 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 · Oct 9, 2020 · 8424 views
    This topic created in 2216 days ago, the information mentioned may be changed or developed.
    每一个大版本新特性有很多,但实际上工程中倒是用得很少,想问问大伙儿用得比较顺手的新特性都有哪些呢?
    Supplement 1  ·  Oct 9, 2020
    发现有点误解,我不是指对比 python2 和 python3,我想问的是 python3 的版本更迭,比如 python3.8/3.9 带来的一些新特性
    50 replies  •  2020-11-17 16:49:31 +08:00
    yaoye555
    yaoye555
    Oct 9, 2020
    1
    3 不是启用很久了么,目前我们生产上用的是.6 上下兼容的挺不错
    676529483
    676529483
    Oct 9, 2020
    2
    type hint,偶尔用:=
    lithiumii
    lithiumii
    Oct 9, 2020 via Android
    3
    开始用 py 之后更新的特性里用最多的是 f string,但那也是好久之前的特性了,3.8 里的 :=偶尔用
    linvaux
    linvaux
    Oct 9, 2020 via iPhone
    4
    @676529483 type hint +1,我们还在用 3.7 海象运算符没法用
    Te11UA
    Te11UA
    OP
    Oct 9, 2020
    5
    @yaoye555 指的是 py3 的每一个大版本 比如说 3.8 的 cached_property 啥的
    wayslog
    wayslog
    Oct 9, 2020
    6
    type hint 。。。海象基本不用。。。
    mashpolo
    mashpolo
    Oct 9, 2020
    7
    f-string,少写了不少代码,挺方便的
    xiaolinjia
    xiaolinjia
    Oct 9, 2020
    8
    type hint,dataclass
    smgui
    smgui
    Oct 9, 2020
    9
    type hint 和 f-string,应该大多数人都是这两个
    ideacco
    ideacco
    Oct 9, 2020
    10
    f-string 是挺方便的
    TimePPT
    TimePPT
    Oct 9, 2020
    11
    f-string +1
    aladdindingding
    aladdindingding
    Oct 9, 2020
    12
    asyncio 吧 python2 gevent 文档太少
    hyperbin
    hyperbin
    Oct 9, 2020 via Android
    13
    typing dataclass f-string
    rglee
    rglee
    Oct 9, 2020 via Android
    14
    f-string 用的最多,type hint 也会用
    soraping
    soraping
    Oct 9, 2020
    15
    f-string 和 type hint 就这两个最顺手
    lithbitren
    lithbitren
    Oct 9, 2020
    16
    f-string 是真的多,:=过了新鲜期就不咋用了
    whileFalse
    whileFalse
    Oct 9, 2020
    17
    map 可以保持顺序这点挺好的。
    wuwukai007
    wuwukai007
    Oct 9, 2020 via Android
    18
    f 可以嵌套写 f,确实不错
    yaoye555
    yaoye555
    Oct 9, 2020
    19
    @Te11UA 哈哈,那必须是 f-string 比%好用太多,其他的都没什么刚需
    dalei
    dalei
    Oct 9, 2020
    20
    f-string type-hint asyncio
    qdzzyb
    qdzzyb
    Oct 9, 2020
    21
    大家都用 asyncio 做什么
    xuboying
    xuboying
    Oct 9, 2020❤️3
    22
    3.8 有个共享内存,感觉是突破 gil 的最佳曲线救国工具,已经用了好多次了,没有人提么?
    chengxiao
    chengxiao
    Oct 9, 2020
    23
    还停留在 3.6,3.8 感觉一堆包都装不上
    leavic
    leavic
    Oct 9, 2020
    24
    要不看你附言的话,我就想说函数式 print 了。

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

    async 一直也没用明白
    killva4624
    killva4624
    Nov 17, 2020
    50
    最喜欢 f-string 和 type hint 。前者比 format 更舒服更优雅。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1751 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 115ms · UTC 17:29 · PVG 01:29 · LAX 09:29 · JFK 12:29
    ♥ Do have faith in what you're doing.