您现在的位置是:首页 > 文章详情

Python3.8正式发布,这些特性令人眼前一亮

日期:2019-10-18点击:292

在2019年10月14号,python38第一版以正式发布。所以屏幕面前的各位2.7忠粉,你们到底还在等什么❓那么3.8版本能给大家带来怎样的全新体验,让我们一起看看吧。

> 🍺本篇文章大约需要2分钟来阅读。届时你将学到:

  • 如何在表达使用使用全新的赋值法:=
  • 如何在定义方法时限制形参类型/
  • 更好得调试代码技巧f"{expr=}"
  • 其他需要你适应的python38特性

0x01 海象赋值法

(PEP 572)这将是python有史以来最大的改变,它的写法与go非常相似。使得对变量的赋值可以发生在表达式的内部。至于为什么叫海象赋值法..

一头迷茫的海象老哥

我们继续看下面两个例子

  • 常规方法

    a = [0,1,2,3,4] n = len(a) if n < 10: print(f"数据长度为{n}, 且小于10") 
  • 使用海象赋值法

    a = [0,1,2,3,4] if (n := len(a)) < 10: print(f"数据长度为{n}, 且小于10") 

第二个方法相比第一次减少了 n = len(a) 的赋值过程,转而写在了if表达式当中,并使n可以继续在下文中使用。

再例如列表推导式,我们需要判断迭代每项i的计算结果ii是否符合条件,并将结果生成列表。

[ii for i in range(1,101) if (ii := i**2 ) > 200 ] 

请尽量将海象运算符的使用限制在清晰的场合中,以降低复杂性并提升可读性。

0x02 仅限位置形参

(PEP 570)新增了一个函数形参语法/用来指明某些函数形参必须使用仅限位置而非关键字参数的形式。

例如demo方法,在/之前的a只可以用位置形参,在*之后的c只可以用关键字形参。

 def demo(a, /, b, *, c): print(a, b, c) demo(1, 2, c=3) # 正确 demo(a=1, 2, 3) # 错误,a不可用关键字形参 demo(1, 2, 3) # 错误,c不可用位置形参 

0x03 f'{expr=}' 记录表达式与调试文档

(bro-36817)增加 = 说明符用于 f-string,它将额外输出变量的引用值,例如:

import moment today = moment.now() print(f"{today=} , have a great time ~") # output today=<moment(2019-10-18t03:32:01)> , have a great time ~ 

0x04 部分常用语言特性更新及性能变化(✨简报)

这边我们挑选了几个较为常用的特性及更新来简单列举一下

  • yield 表达式将在推导式生成器中不被允许使用
  • continue 语句将在 finally 表达式中被允许使用
  • dict 现可通过 reversed 方法按照插入顺序倒序
  • asyncio 的任务现在可以被命名
  • pickle 模块使用的默认协议现在为 Protocol 4, 短小且精悍
  • shutil模块上的copy相关方法效率提高26%到50%
  • typing 模块加入了LiteralFinal, 类型检查任重而道远
  • pathlibos.path 针对部分异常字符路径将返回False 而不是报错
  • math模块添加了dist,hypot,prod,isqrt4个新函数,具体详查

除了以上几项,更多新特性请访问https://docs.python.org/zh-cn/3.8/whatsnew/3.8.html


更多精彩尽在公众号:进击的Hunter qrcode</moment(2019-10-18t03:32:01)>

原文链接:https://my.oschina.net/Apathy/blog/3119408
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章