Short-circuiting with helper function in print()

32 views Asked by At

Can someone please explain why the following code comes out as "geeks" in the console?

def check():
    return "geeks"

print(0 or check() or 1)

I'm assuming that Python recognizes the boolean operator, thus treating 0 == False?

So does that mean every time boolean operators are used, the arguments are treated as True/False values?

1

There are 1 answers

2
CryptoFool On BEST ANSWER

The reason that "geeks" will be printed is that or is defined as follows:

The Python or operator returns the first object that evaluates to true or the last object in the expression, regardless of its truth value.

When check() returns the string "geeks", that value evaluates to True because it is a non-empty string. That value is then the first term in the or expression that evaluates to True, so that value is the result of the entire expression, and so is what gets printed.