You are viewing a single thread.
View all comments View context
22 points

Python:

return a or b

i like it because it reads like a sentence so it somewhat makes sense

and you can make it more comprehensive if you want to:

return a if a is not None else b

permalink
report
parent
reply
14 points
*

This diverges from the OP code snippets if a has the value False.

permalink
report
parent
reply
7 points

I personally dislike this because when you read “or” you expect some boolean result not a random object :/

permalink
report
parent
reply
4 points

there’s always the second option for you

permalink
report
parent
reply
1 point

For newer python people, they see return a or b and typically think it returns a boolean if either is True. Nope. Returns a if a is truthy and then checks if b is truthy. If neither are truthy, it returns b.

permalink
report
parent
reply
7 points
*

Returns a if a is truthy and then checks if b is truthy. If neither are truthy, it returns b.

Not quite. If a is not truthy, then the expression a or b will always return b.

So, there is never any reason to check the truthiness of b.

you can paste this in your repl to confirm it does not.
class C:
 def __repr__(self): return [k for k, v in globals().items() if v is self][0]
 def __bool__(self):
  print(f"{self}.__bool__() was called")
  return False

a, b = C(), C()
print(f"result: {a or b}")
output
a.__bool__() was called
result: b
permalink
report
parent
reply
3 points

Ah, good catch.

permalink
report
parent
reply

Programmer Humor

!programmerhumor@lemmy.ml

Create post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.

Community stats

  • 4.4K

    Monthly active users

  • 1.5K

    Posts

  • 35K

    Comments