首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.8的"Walrus“运算符可以使用就地运算符吗?

Python3.8的"Walrus“运算符可以使用就地运算符吗?
EN

Stack Overflow用户
提问于 2020-03-01 12:19:58
回答 2查看 460关注 0票数 2

在Python 3.8中,引入了Walrus运算符,允许将赋值作为表达式。

这意味着我们可以替换这两个语句

代码语言:javascript
复制
a = 2
print(a)

使用

代码语言:javascript
复制
print(a := 2)

但是,Python也具有运算符的“就地”赋值,例如,a = a * 3等同于a *= 3

有没有办法将“就地”运算符赋值与Walrus赋值结合使用?

对于以下代码,

代码语言:javascript
复制
a *= 3
print(a)

要使用Walrus赋值重新创建它,您似乎必须这样做

代码语言:javascript
复制
print(a := a * 3)

这两种尝试都会引发SyntaxError

代码语言:javascript
复制
print(a :*= 3)
print(a *:= 3)
EN

回答 2

Stack Overflow用户

发布于 2020-10-28 23:40:56

不能将就地运算符与海象运算符一起使用。

解释:

walrus运算符将一个值赋给一个变量并返回它的值。

在位运算符是将运算符应用于现有变量并更新该变量的快捷方式。就地运算符对于变量没有任何意义。如果将它们应用于尚未赋值的变量,则会引发错误。

因此,将就地和海象结合起来没有用例。

编辑:更实用的解释:

a:+=1的含义是什么?如果a不存在,1将被添加到什么值?a的最终值是什么?

供参考:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2020-03-01 12:30:16

您需要先定义a

print((a := 2)*3)

6

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60471949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档