从技术上讲,赋值运算符的任何用法都可以用括号括起来的海象运算符替换吗?

问题描述 投票:0回答:1

假设我们有这个赋值语句:

a = 5

尽管无缘无故地这样做显然很丑陋,但我们可以在技术上完成同样的事情:

(a := 5)

这仍然将 5 分配给

a
,并且海象运算符返回的值并未被使用。

是否存在这种替代方法不起作用的情况?

python python-3.x syntax language-design python-assignment-expression
1个回答
0
投票

我认为它应该在任何地方都有效。

  • 您可以在任何允许声明的地方进行赋值。
  • 表达式可以用作语句。
  • 海象赋值是一个表达式。

因此普通赋值和海象赋值都可以用作语句。

有一个特殊情况的限制,海象赋值不能用作顶级语句,这就是为什么你必须将其放在括号中。

我认为它可能无法在类的顶级代码中使用,但这可行:

class Foo:
    (a := 1)

print(Foo.a) # prints 1
© www.soinside.com 2019 - 2024. All rights reserved.