Python3.8 新特性:赋值表达式

枫铃3年前 (2021-07-09)Python294

Python3.8 正式版本已经发布,喜欢尝鲜的同学可以下载下来体验一下,我并没有打算升级到最新版本,因为性能上并没有显著提升。但还是有必要了解其中的新特性。

赋值表达式的语法是:“ name := expression ”,这个曾经引起很大争议特性,最终还是加入到了Python3.8。不过它也仅仅只是一个锦上添花的特性。

我们可以通过一个例子来了解它的使用场景。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> import re

>>> data = "hello123world"
>>> match = re.search("(\d+)", data)  # 3
>>> if match:                         # 4
...     num = match.group(1)
... else:
...     num = None
>>> num
'123'

代码很简单,就是一个使用正则表达式提取字符串中数字部分的操作。之前的做法是先将调用 re.search 方法,返回Match对象,然后赋值给变量 match,再判断 match 对象是否为None来提取其中的数字部分。

在Python3.8中,你可以将第3、4行代码合并成一行代码,在 if 语句中,可以给变量赋值,这就是赋值表达式。相比之前的版本,代码少了一行。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> if match:=re.search("(\d+)", data):
...     num = match.group(1)
... else:
...     num = None
...
>>> num
'123'

这样看起来代码确实精简了一点点,但是,这样的特性对开发者来说,只能说是一个不痛不痒的功能,至少对我来是这样。

相关文章

python3 的 str bytes 区别

在Python 3版本中,把’xxx’和u’xxx’统一成Unicode编码,即写不写前缀u都是一样的。 在Python 3版本...

Python 初学者必看:Python 异常处理集合

异常 广义上的错误分为...

python 实现redis订阅发布功能

python 实现redis订阅发布功能

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串...

python打印log重复问题

浅析python日志重复输出问题 问题起源: 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模...

python从字符串中提取数字_filter

my_str = '123and456' number = filter(str.isdigit, my_str ) #...

没看完这11 条,别说你精通 Python 装饰器

没看完这11 条,别说你精通 Python 装饰器

对于每一个学习 Python 的同学,想必对 @ 符号一定不陌生了,正如你所知, @ 符号是装饰器的...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。