pythonの論理演算子


前言
pythonの演算子、賦値演算子はよく知られていますが、ここでは論理演算子について説明します.
論理演算子
pythonでは論理演算もサポートするが、pythonでは論理演算子の機能が他の言語と異なる.pythonでは「or」、「and」、「not」の3つの単語をそれぞれ論理演算、または「与」、「非」の演算子として用いる、ここでorとandは両目演算子、notは単目演算子である.論理演算子のオペランドは、式またはオブジェクトとすることができます.以下、それぞれの機能について説明します.
  • or or演算子左オペランドのブール値がTrueの場合、左オペランドを返します.そうでない場合、右オペランドまたはその計算結果(式の場合)を返します.例は、
    >>> 0 or 3+5                  #         False
    8
    >>> 3 or []                   #         True
    3
    
  • です.
  • and左オペランドのブール値がFalseの場合、左オペランドまたはその計算結果(式の場合)が返されます.そうでない場合、右オペランドの実行結果が返されます.例は、
    >>> 3-3 and 5
    0
    >>> 3-4 and 5
    5
    
  • です.
  • notオペランドのブール値がFalseの場合はTrueを返し、そうでない場合はFalseを返します.例としては、
    >>> not (3-5)
    False
    >>> not(False)
    True
    
  • です.
    論理演算子の優先度not > and > orのデフォルトでは、演算子の優先度は複雑な式の中のその単一の式を先に実行することを決定するが、ユーザは括弧"()"を用いて式の実行順序を変更することができる.演算子は一般的に左から右へ結合されます.
    >>> 0 and 3 or 4  #       0 * 3 + 4   .       ,         
    4
    >>> 0 and 3 or 4 and 5  # 0*3 + 4*5
    5
    >>> 0 and 3 or 4 and 5 or 6  # 0*3 + 4*5 + 6
    5
    >>> 0 and 3 or 4 and 5 or 6 and 7  # 0*3 + 4*5 + 6*7
    5