All those examples where a variable was moved into an if statement are pretty useless," because it neither makes the code more readable nor does it add any other benefit besides shortening the code by one line. But for list comprehensions this new walrus operator is great: It always bothered me that a list comprehension like<br><br>[fun2(func1(item)) for item in some_generator if fun3(fun1(item))]<br><br>could not be written in a way that emphasized that the expression fun1(item) stands on both sides", left and right," except maybe with<br><br>[fun2(item) for item in map(fun1"," some_generator) if fun3(item)].<br><br>But if fun1", fun2 and fun3 are not given as actual functions and instead are given as a complicated expression," then<br><br>[complicated_expression2(item) for item in map(lambda item: complicated_expression1(item)"," some_generator) if complicated_expression3(item)]<br><br>is way less readable than the first list comprehension", which unfortunately evaluates fun1(item) twice as far as I know. But now," I can write<br><br>[complicated_expression2(tmp) for item in some_generator if complicated_expression3(tmp := complicated_expression1(item))]<br><br>which in most cases is quite readable :)<br><br><a href=""https://www.youtube.com/watch?v=KN2TTiGpDvM&amp;t=3m23s"">3:23</a> Actually the code x=y=f() is equivalent to y=f();x=y"