赋值表达式
在python3.8中,将赋值语句的 =
前加上一个冒号 :
。
它就变成了一个赋值表达式(Assignment expressions)。
It is affectionately known as “the walrus operator” due to its resemblance to the eyes and tusks of a walrus
由于它和海象的眼睛和长牙相似,它被亲切地称为海象运算符
赋值表达式会在赋值的同时返回左值的引用。
用例
-
if,while中使用:
cur.execute('select t1.id, t1.name from t1') row = cur.fetchone() while row: print("id=%d, name=%s" % (row[0], row[1])) row = cur.fetchone()
在这个示例中,赋值表达式可以减少部分代码:
cur.execute('select t1.id, t1.name from t1') while row:=cur.fetchone(): print("id=%d, name=%s" % (row[0], row[1]))
-
短路用法使用
n = 0 for char in txt: if char == 'p': n += 1 print(n)
使用短路和赋值表达式可以修改为:
n = 0 for char in txt: (char == 'p') and (n := n + 1) print(n)
备注
我的版本:Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
网友评论