実際にxor
は解決策が必要でしたが、考えているうちに上記の質問について疑問に思い始めました。とはどういう意味True == True != False
ですか?
ドキュメントを見るとTrue == True and True != False
だと思いますが、より一般的で確実なアプローチが必要です。そのようなコードの読み取り可能な形式のバイトコードをすばやく取得するにはどうすればよいですか。バイトコードとドキュメントの両方よりも簡単に見つける方法はありますか?
実際にxor
は解決策が必要でしたが、考えているうちに上記の質問について疑問に思い始めました。とはどういう意味True == True != False
ですか?
ドキュメントを見るとTrue == True and True != False
だと思いますが、より一般的で確実なアプローチが必要です。そのようなコードの読み取り可能な形式のバイトコードをすばやく取得するにはどうすればよいですか。バイトコードとドキュメントの両方よりも簡単に見つける方法はありますか?
ほとんどの言語でa == b != c
は、 として解析され(a == b) != c
ます。したがって、これは と評価されTrue == True != False
、は と評価されます。(True == True) != False
True != False
True
ここで見られるように、Python には別の意味があります。
>>> True != False != False
False
>>> (True != False) != False
True
Python では、a == b != c
に相当し(a == b) and (b != c)
ます。これは、True == True != False
が と同等であることを意味し、 は(True == True) and (True != False)
に評価されTrue and True
、 は に評価されTrue
ます。
偶然にも、両方の意味 (Python の意味と他の言語の意味) はここで同じ結果をもたらしますが、注意が必要です。