普通、プログラム言語ではorとand (または||と&&などの類似表現) は (2項の) 論理演算を意味します。 つまりorやandが返す値は bool 値 (True/False) です。 C系の言語では True/False が 1/0 で代用されたりもしますが、とにかく論理演算 or と and は論理値に相当する値を返します。 しかし、Python では、orとandは論理値を返すとは限りません。 Pythonにおいて、式x and yは、次と等価です: if not bool(x): # xの論理値がFalseなら return x # yを見ることなく、しかもFalseではなくxそのものをリターン else: # xの論理値がTrueなら return y # bool(y) ではなく、yそのものをリターン
