and と or の動作がイメージと違う

  • andの場合
    • 値は左から右にブール値として評価されます。
    • すべての値がブール値としてtrueである場合、 and は最後の値を返します。
    • いづれかの値がfalseである場合、 and は最初のfalseとなる値を返します。
>>> 1 and 2 and 3 and 4
4
>>> [] and {} and 0 and 1 and 2
[]
  • orの場合
    • 値は左から右にブール値として評価されます。
    • いづれかの値がtrueである場合、 or はすぐにその値を返します。
    • すべての値がfalseの場合、 or は最後の値を返します。
    • or はブール値としてtrueである値が見つかるまで値を評価します。残りは無視します。
>>> 1 or 2 or 3 or 4
1
>>> 0 or {} or [] or () or 1
1