this post was submitted on 26 Jul 2025
73 points (98.7% liked)

Python

7363 readers
44 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] Eheran@lemmy.world 8 points 2 weeks ago (2 children)

Walrus operator. What did I just read?

[–] sugar_in_your_tea@sh.itjust.works 12 points 1 week ago (2 children)

I love the walrus operator:

if (x := some_function()):
    do_something(x)
else:
    # x is None or False or something, consider it invalid

The only thing I wish was different is adding a scope, which would make x invalid outside the block. But Python's scoping rules are too dumb to handle this case.

[–] joyjoy@lemmy.zip 6 points 1 week ago

Walrus is more useful in a while loop.

while (data := f.read(1024)):
    pass
[–] tunetardis@piefed.ca 2 points 1 week ago

I think my most common use case is with dictionary lookups.

if (val := dct.get(key)) is not None:
    # do something with val

I've also found some cases where the walrus is useful in something like a list comprehension. I suppose expanding on the above example, you you make one that looks up several keys in a dict and gives you their corresponding values where available.

vals =  [val for key in (key1, key2, key3) if (val := dct.get(key)) is not None]
[–] kryptonianCodeMonkey@lemmy.world 2 points 1 week ago* (last edited 1 week ago)

Walrus operator does an inline assignment to a variable and resolves to the value assigned. If it is in a condition statement, like "if x := y:", it assigns the value of y to x then interprets the expression of the condition as of it just said "if x:". Functionally, that means the assignment happens regardless of the value of y, but the condition only passes if the value of y is "truthy", i.e. if it's not None, an empty collection, numerically equal to zero, or just False.