为什么需要 Python 海象运算符 (:=) 而不是仅仅使用普通的赋值运算符(等号)?[复制]

Why is Python walrus operator (:=) needed instead of just using the normal assignment operator (equal sign)? [duplicate]

提问人:Randy Sugianto 'Yuku' 提问时间:9/8/2022 最后编辑:Randy Sugianto 'Yuku' 更新时间:9/8/2022 访问量:668

问:

这个问题在这里已经有答案了:
去年关闭。

这篇文章是去年编辑并提交审查的,但未能重新打开该帖子:

原始关闭原因未解决

我刚刚了解到 Python 3.8 中有一个海象运算符

if a := 2 + 3:
    print(a) # 5

我想知道为什么他们创建了一个新的运算符,而不是允许现有的赋值运算符作为表达式,比如

(引发 SyntaxError 的代码如下)

if a = 2 + 3: # assign 2 + 3 to a, then evaluate the trueness of a
    print(a) # 5

编辑:我看到了这个问题,但这并没有具体解决为什么我们不能使用现有运算符代替 .=:=

python 变量赋值 assignment-operator walrus-operator

评论

3赞 deceze 9/8/2022
👉 stackoverflow.com/a/4869838/476
0赞 Alexey S. Larionov 9/8/2022
然后你就不能创建更复杂的条件,比如 ,因为赋值运算符不返回任何内容if (a=2+3) and True:
0赞 deceze 9/8/2022
@Alexey 赋值运算符可以返回一些东西,就像在大多数其他语言中一样......

答: 暂无答案