you are viewing a single comment's thread
view the rest of the comments
[–] 22 points 2 years ago (6 children)

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

  • source
  • parent
  • hideshow 6 child comments
  • [–] 1 point 2 years ago (2 children)

    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.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 7 points 2 years ago* (last edited 2 years ago) (1 child)

    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}")
    

    spoiler output

    a.__bool__() was called
    result: b
    

    :::

  • source
  • parent
  • hideshow 1 child comment