Pythonの論理演算子の優先順位はnot、and、or、>、<、==です

論理演算子は、より一般的であるnotandor><、および==、理論的には比较运算符的优先级>not>and>or
それらの間の関係を明確にするためにandor実行時の特性を明確にする必要があります。コードは次のとおりです。

class Debug:
    def mainProgram(self):
        self.x0 = 0
        self.x1 = 1
        self.x2 = 5
        print(self.x0 and self.x1)  # 0
        print(self.x1 and self.x0)  # 0
        print(self.x1 and self.x2)  # 5
        print(self.x2 and self.x1)  # 1
        print(self.x0 or self.x1)   # 1
        print(self.x1 or self.x0)   # 1
        print(self.x1 or self.x2)   # 1
        print(self.x2 or self.x1)   # 5
        print(self.x1 > self.x0)    # True
        print(self.x1 < self.x0)    # False
        print(self.x1 == self.x0)   # False
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

プログラミング言語には規則があり、0はデフォルトでFalseになり、0以外の数値はデフォルトでTrueになることがわかっています。上記のコードから、私たちがいることを見ることができるself.x00変数がありself.x1値は1self.x2値があります5self.x0 and self.x10self.x1 and self.x00の値は、我々が表示and結果をTrue and False常にFalseますが、0同等の意味でのFalse(コードは同じではないことに注意)、これに関係なく、スワップしないself.x1 and self.x0ためにかどうか、結果は0稀に。ただし、注文self.x1self.x2時間を交換すると、値が2番目の位置に出力されることがわかりました。これもよく理解されています。これは、ゼロ以外の整数が感覚True等しいためTrue and True、結果はTrueであり、コードはand前後に2つ必要です。両方の条件を新たに判定し、最終的に2位の結果を出力します。次に、順序が逆になっていてもいなくてもself.x0 or self.x1、値は同じあることがわかり1ます。これも非常に理解しやすいTrue or False結果なTrueのでTrue、結果を保持する必要があり1ます。最終結果はです。次に、self.x1 or self.x2順序を変更する1self.x2 or self.x1、出力結果は5ありデフォルトでpython の出力結果が最初の位置の結果であることがわかります。このことから、次の結論が得られます。Pythonでは、and論理演算子は、andの前後の条件がすべてtrueの場合、次の条件の結果を出力し、現在の条件が1つのtrueと1つのfalseの場合、出力条件はfalseです。or論理演算子は、orの前後の条件がtrueの場合、前の条件の結果を出力し、現在の条件が1つのtrueと1つのfalseの場合、出力条件はtrueです。比較演算子の結果は通常TrueまたはFalseです。
次は、私たちは、上記の結論を探求するために使用するand、、 、or および優先順位論理演算。まず、我々は、三つのカテゴリーにそれらを分け、クラスとして、クラスとしてクラス、比較演算子としてとしてだけでなく、次のように、としてクラス:><==notandor><==

class Debug:
    def mainProgram(self):
        self.x0 = 0
        self.x1 = 1
        self.x2 = 5
        print(self.x1 > self.x0 and self.x2)    # 5
        print(self.x1 < self.x0 and self.x2)    # False
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

self.x1 > self.x0 and self.x2出力結果はで5ありself.x1 < self.x0 and self.x2、結果はであることがわかりFalseます。self.x1 > self.x0 and self.x2比較演算子については、比較演算子の優先度が高い場合、最初にself.x1 > self.x0条件付き判断を実行し、結果をにしTrue、次に実行結果True and 5(変数self.x2の値5)を、これまで常に感じていた法則に従う必要があります5以下の場合self.x1 < self.x0 and self.x2self.x1 < self.x0結果はFalse、そしてFalse and 5その結果は、以前の法律に基づいてする必要がありますFalseでは、比較演算子の優先度が低い場合はどうなるandでしょうか。self.x1 > self.x0 and self.x2用語、self.x0 and self.x2結果が01 > 0結果はTrue、最終的な結果がでなければなりませんTrue、明らかに我々が得た結果と一致しません、。これから、比較演算子の優先度がandよりも高いことがわかります。
コードを記述するときによく使用する条件ステートメントについて考えてみてくださいif x > 30 and x < 100:。通常and、比較演算子の両側の条件部分に括弧を追加しません。これは、比較演算子の優先度が高いためでもありandます。
次に、not演算子をor優先演算子と比較ます。コードは以下のように表示されます:

class Debug:
    def mainProgram(self):
        self.x1 = 1
        print(not self.x1 or self.x1)    # 1
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

私たちは、最終的な出力結果があることがわかり1仮想的なことをorオペレータが優先順位が高い、self.x1 or self.x1結果がどうあるべき1、とnot 1の結果がでなければなりません0私たちは、より高い優先度を想定していないと、出力結果は、その後、されていないnot self.x1としてnot 1の結果00 or 1結果は1我々の結果と一致し、このため、締結作業の優先順位や演算子よりも高い優先度ではありません。
次に、演算子の優先度と演算子andの優先度を比較しますorコードは以下のように表示されます:

class Debug:
    def mainProgram(self):
        self.x0 = 0
        self.x1 = 1
        self.x2 = 2
        print( self.x0 and self.x1 or self.x2)  # 2
        print( self.x1 and self.x0 or self.x2)  # 2 
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

or優先度が高いと仮定します。なぜなら、self.x0 and self.x1 or self.x2以前の法則に従ってself.x1 or self.x2結果が要約されている1ためself.x0 and 1、結果0と私たちの結果2が一致しないためです。したがって、or演算子の優先順位がよりも低いことをさらに考慮してくださいandself.x0 and self.x1結果は00 or self.x2結果は2です。さらなるself.x1 and self.x0 or self.x2検証行うことができ、ここでは議論プロセスは省略されます。最後に、and演算子の優先順位がor演算子の優先順位よりも大きいという結論に達しました
同様に、次のコードを使用してnot演算子とand演算子の優先度を比較します。

class Debug:
    def mainProgram(self):
        self.x0 = 0
        self.x1 = 1
        print(not 0)                    # True
        print(not 1)                    # False
        print(not self.x0 and self.x1)  # 1
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

and優先度が高い場合、最終的な出力結果はTrueまたはFalseであり、現在の出力結果は数値であるためnot、優先度が高いおよびであることが簡単にわかりandます。
最後に、比較演算子とnot演算子の優先順位関係を確認し、これを使用して、これらの4つのタイプの演算の優先順位を決定する必要があります。コードは次のとおりです。

class Debug:
    def mainProgram(self):
        self.x0 = 0
        self.x1 = 1
        print(not 0)                    # True
        print(True > 1)                 # False
        print(not self.x0 > self.x1)    # True
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

テストするTrue > 1と、出力結果はFalseであることがわかります。そのため、比較演算子の優先度はnot演算子よりも高いと推測できます。場合なのでnotオペレータの優先順位が高くなって、not self.x0結果はTrue、とTrue > 1結果があるFalseことがTrue、結果は一致しません我々は最終的に取得する。比較演算子の優先順位が高い場合、self.x0 > self.x1結果はFalseというnot False結果はTrue、これを確認以前の推論。
また、同じ型の演算子の場合、演算の順序は左から右への実行順序に従います。演算の順序を変更したい場合は、括弧を追加してください。
便利だと思ったら手を挙げていいねしてもらい、もっと多くの人に見てもらいたいです〜

おすすめ

転載: blog.csdn.net/u011699626/article/details/108591857