在Python 3.8中,引入了Walrus运算符,允许将赋值作为表达式。
这意味着我们可以替换这两个语句
a = 2
print(a)使用
print(a := 2)但是,Python也具有运算符的“就地”赋值,例如,a = a * 3等同于a *= 3
有没有办法将“就地”运算符赋值与Walrus赋值结合使用?
对于以下代码,
a *= 3
print(a)要使用Walrus赋值重新创建它,您似乎必须这样做
print(a := a * 3)这两种尝试都会引发SyntaxError
print(a :*= 3)
print(a *:= 3)发布于 2020-10-28 23:40:56
不能将就地运算符与海象运算符一起使用。
解释:
walrus运算符将一个值赋给一个新变量并返回它的值。
在位运算符是将运算符应用于现有变量并更新该变量的快捷方式。就地运算符对于新变量没有任何意义。如果将它们应用于尚未赋值的变量,则会引发错误。
因此,将就地和海象结合起来没有用例。
编辑:更实用的解释:
a:+=1的含义是什么?如果a不存在,1将被添加到什么值?a的最终值是什么?
供参考:
a:=8 #means : assign 8 to a and "return" a
a+=1 #means : a = a +1 and it raises an exception if a doesn't exists发布于 2020-03-01 12:30:16
您需要先定义a:
print((a := 2)*3)
6
https://stackoverflow.com/questions/60471949
复制相似问题