pythonでのショートロジック

3595 ワード

ショートロジックのルールは次のとおりです.
  • 式は左から右に演算され、orの左側の論理値がTrueであれば、orを短絡した後のすべての式(andであれorであれ)は、orの左側の式を直接出力する.orの左側の論理値がFalseである場合、orの右側の式が出力され、その後の式が真であるか偽であるかにかかわらず、式全体の結果が後の式の結果
  • となる.
  • 式は左から右に演算され、andの左側の論理値がFalseである場合、orが現れるまで短絡し、and左側の式をorの左側に出力し、次の論理演算に参加する.andの左側の論理値がTrueである場合、その後の式が真であるか偽であるかにかかわらず、式全体の結果が後の式の結果
  • として出力.
  • orの左側がFalse、またはandの左側がTrueであればショートロジックは使用できません.注意:1、Pythonではandの優先度がorより大きく、andとorは値を返し、TrueとFalseに変換されません.notとandおよびorが一緒に演算される場合、優先度はnot>and>or 2、PythonではNone、任意の数値タイプの0、空文字列"、空メタグループ()、空リスト[]、空辞書{}がFalseとして扱われ、カスタムタイプが実現された場合_nonzero __ ()または_len __ ()メソッドでメソッドが0またはFalseを返すと、そのインスタンスもFalseとみなされ、他のオブジェクトはTrueとなります.

  • 特殊な場合(andとorの三目演算子):
    result=xはまず条件xがyの真偽より小さいと判断し、真andであればxを返し、x or yを計算する.偽の場合、andはFalseを返し、False or yはyを返すに違いないと計算します.
    C#、C++などの言語を知っている人は、三元演算オペレータをよく知っています.
     bool ? a : b 
    

    boolが真であればa,そうでなければbである.それに応じてPythonに変換するスタイルは以下の通りです.
     bool and a or b
    

    解析:まずa,bはすべて真で、これはデフォルトです.boolが真であればbool and aが真であり、出力a、短絡bである.boolが偽の場合、短絡a、直接bool or b、出力b.
    もっと簡単な書き方に変えてください.
    return a if bool else b
    

    拡張:
    次の例は、ショートロジックの原理を理解するのに役立ちます.
    >>> 0 and 2
    0
    >>> [] and 2
    []
    >>> 2 and {}
    {}
    >>> [] and {}
    []
    >>> 2 and 5
    5
    >>> 5 and 2
    2
    >>> 0 or 2
    2
    >>> 2 or []
    2
    >>> False or 5
    5
    >>> [] or {}
    {}
    >>> {} or False or []
    []