Did you know? Since Python 3.8, you can use the walrus operator ( := ) to assign a value to a variable as part of an expression. It’s a small piece of syntax that can meaningfully tidy up loops and comprehensions where you’d otherwise compute the same value twice.
Here’s a classic example — reading lines from a file until you hit an empty line:
1 2 3 4 5 6 7 8 9 10 11 | # Without the walrus operator with open("data.txt") as f: line = f.readline() while line: print(line.strip()) line = f.readline() # With the walrus operator — assign and test in one step with open("data.txt") as f: while (line := f.readline()): print(line.strip()) |
It’s also handy in list comprehensions when you want to filter on a computed value without recomputing it:
1 2 3 4 5 6 7 | numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Keep only squares greater than 20, without squaring twice big_squares = [sq for n in numbers if (sq := n * n) > 20] print(big_squares) # [25, 36, 49, 64, 81, 100] |
A word of caution: the walrus operator is powerful but easy to overuse. Reach for it when it genuinely removes duplication or makes intent clearer — not just because it’s clever. 🐍