Te11UA
V2EX  ›  Python

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

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

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

async 一直也没用明白
killva4624
   50
killva4624  
   2020 年 11 月 17 日
最喜欢 f-string 和 type hint 。前者比 format 更舒服更优雅。
推荐学习书目
› 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
© 2026 V2EX · 121ms · 3.9.8.5