Python While 循环中的海象运算符

Python Walrus Operator in While Loops

我正在尝试理解海象赋值运算符。

当条件在循环中重新分配为 False 时,经典 while 循环中断。

x = True
while x:
    print('hello')
    x = False

为什么这不能使用海象运算符? 它忽略了 x 的重新分配,产生了无限循环。

while x := True:
    print('hello')
    x = False

您似乎认为该赋值在进入循环之前发生一次,但事实并非如此。重新分配发生在检查条件之前,并且发生 每次迭代

x := True 将始终为真,无论任何其他代码如何,这意味着条件将始终计算为真。

假设我们有一个代码:

>>> a = 'suhail'
>>> while len(a)<10:
...  print(f"too small {len(a)} elements expected atleast 10")
...  a+='1'

赋值表达式有助于避免调用 len() 两次:

>>> a='suhail'
>>> while (n:=len(a))<10:
...  print(f"too small {n} elements expected atleast 10")
...  a+='1'
... 
too small 6 elements expected atleast 10
too small 7 elements expected atleast 10
too small 8 elements expected atleast 10
too small 9 elements expected atleast 10