Short-circuiting with helper function in print()

Question:

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?

Asked By: pfan

||

Answers:

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.

Answered By: CryptoFool
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.