加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python 3.8 毕竟要不要进级?用过之后的小哥这样说

发布时间:2019-10-25 17:50:12 所属栏目:建站 来源:杨鲤萍
导读:本文转自雷锋网,如需转载请至雷锋网官网申请授权。 距 Python 3.8 不变版正式宣布已经已往了小半个月,不少 Python 常驻用户已经将 Python 更新到了 3.8 版本,也有一些伴侣担忧代码运行兼容性等题目,依然坚挺在 Python3.7 中。 那么,毕竟要不要更新到

通过行使 walrus 运算符,我们可以在 while 轮回的表达式中读取并分派所读数值,这样还可以或许停止在 while 轮回外显式声明变量。下面是一个例子:

  1. while chunk := file.read(256) : 
  2.  
  3. process(chunk) 
  • 正则表达式匹配

正则表达式匹配是一个必要两个步调的进程。在第一步中,我们搜查是否产生匹配,在下一步中,我们提取子组:

Python 3.8 毕竟要不要进级?用过之后的小哥这样说

正则表达式匹配

从上面的代码可以看出,假如匹配,我们正在从头计较 re.match(info),这会按照数据低落措施的速率。

上述代码操作 walrus 运算符可以重写如下,而且可以停止从头计较:

Python 3.8 毕竟要不要进级?用过之后的小哥这样说

正则表达式匹配:=

  • 那边不能用 walrus 运算符?

1. 给变量赋值

a = 5 #Valid

a := 5 #InValid

empty_list = [] #Valid

empty_list := [] #InValid

如上所示,我们不能将=运算符与:=运算符一路行使,walrus 运算符只能是表达式的一部门。

2. 加减运算

a += 5 #Valid

a :+=5 # Invalid

3. lambda 函数中的赋值表达式

(lambda: a:= 5) # Invalid

lambda: (a := 5) # Valid, but not useful

(var := lambda: 5) # Valid

  • PEP-572 与争议

walrus 运算符是作为 pep-572(python 加强提议)的一部门引入的。

一个面向公共的器材,必需获得发现者圭多·范·罗森(Guido van Rossum)和他所选的代表们的核准。因此,环绕 walrus 运算符的争论许多,个中部门内容如下:

1. 句法变异

开拓职员提出了很多更换「:=」,譬喻表达式->名称、名称->表达式、{表达式} 名称等。很少有行使现有要害字的提议,而其他行使新的运算符的提议。

2. 向后兼容性

这个特征不会向后兼容,也不会在早年的 python 版本上运行。

3. 运算符名称

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读