昨天Python3.8发布啦,新版本添加了很多全新功能,也表明Python的版本之路前进了一大步,小编整理了新版本的几个主要更新,为大家做详细解读!
顺便一提,导致Python之父龟叔愤然离职的赋值表达式功能还是上线了~
新增赋值表达式
PEP 572的标题是赋值表达式,也叫做「命名表达式」,不过它现在被广泛的别名是「海象运算符」(The Walrus Operator)。因为:=很像海象「眼睛小,长着两枚长长的牙」这个特点^_^。
在这里给大家展示个通过用PEP 572改写的一行实现斐波那契数列的例子:
基于Raymond Hettinger版本改写:
强制使用位置参数
PEP 570说白了就是强制使用者用位置参数
温馨提示:Python3.8版本下,见到以下报错:
TypeError:divmod()takesnokeyword arguments
就是这个原因啦!
运行时添加审计hooks
现在可以给Python运行时添加审计钩子:
目前支持审计的事件名字和API可以看PEP文档(延伸阅读链接2), 是其中之一。另外还可以自定义事件:
跨进程内存共享
可以跨进程直接访问同一内存(共享):
全新第三方包读取模块
使用新的 模块可以直接读取第三方包的元数据:
新增缓存属性
缓存属性 (cached_property) 是一个非常常用的功能,很多知名 Python 项目都自己实现过它,现在终于进入版本库了。
functools.lru_cache作为装饰器时可以不加参数
装饰器支持 和 2个参数,如果对默认参数不敏感,过去只能这么用(需要空括号):
从3.8开始可以直接作为装饰器,而不是作为返回装饰器的函数(不加括号):
就像 ,绝大部分场景都是这么用:
其实 支持多个参数:
所以这种使用全部缺省值的装饰器工厂用法中,括号反而显得多余了。
Asyncio REPL
REPL对于学习一门新的编程语言非常有帮助,你可以再这个交互环境里面通过输出快速验证你的理解是不是正确。
官方全新增加了一个Asyncio REPL功能,使用更加方便!
F-strings DEBUG
一个新增的调试功能,当然一贯的,对调试毫无帮助。。。。。。
Async Mock
单元测试模块unittest添加了mock异步代码的类:
可迭代解包
这个主要是问题修复。
好啦,现在你知道 Python 3.8 的最新功能了吗?
领取专属 10元无门槛券
私享最新 技术干货