• @stebo02@sopuli.xyz
    link
    fedilink
    227 months ago

    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

    • Turun
      link
      fedilink
      15
      edit-2
      7 months ago

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

    • @alehc@lemmy.world
      link
      fedilink
      77 months ago

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

    • @rwhitisissle@lemmy.ml
      link
      fedilink
      17 months ago

      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.

      • Arthur Besse
        link
        fedilink
        7
        edit-2
        7 months ago

        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