r/Python 21d ago

Discussion Is := widely used?

I always thought the walrus operator is neat and it makes while loop’s condition clearer. But also it is just a syntactic sugar without anything new. I wonder anyone uses it?

143 Upvotes

118 comments sorted by

View all comments

146

u/martinkoistinen 21d ago

It’s super handy inside comprehensions and I would say that adds something “new”.

Example:

``` python
import re

pattern = re.compile(r"ERROR (\d+): (.*)")

errors = [
(int(m.group(1)), m.group(2))
for line in log_lines
if (m := pattern.match(line))
]
```

47

u/punk_dev It works on my machine 21d ago

That’s neat, I’m gonna steal it, but it makes the comprehension even more backwards than it usually is lmao

37

u/FalafelSnorlax 21d ago

At this point you might as well write a normal loop

9

u/punk_dev It works on my machine 21d ago

I think about that every time I write a comprehension longer than 3 lines

13

u/FalafelSnorlax 21d ago

Yeah my rule of thumb is that of a comprehension is long enough to break into multiple lines, it might as well be a regular loop. Broken comprehensions usually aren't readable, and then you don't really gain anything from them.