-2
Pythonでは、True != True
はFalse
であり、False != True
はTrue
である必要があります。しかし、評価結果がTrue
であるべきではないでしょうか?なぜTrue!= True!= TrueがFalseに評価される
Pythonでは、True != True
はFalse
であり、False != True
はTrue
である必要があります。しかし、評価結果がTrue
であるべきではないでしょうか?なぜTrue!= True!= TrueがFalseに評価される
これは、2つのチェックが別々に行われるためです。 True != True != True
はTrue != True and True != True
と等価であり、オペランドのいずれもがTrue
と評価されないので、False
と評価されます(実際には、短絡のために2番目の比較を評価しません)。
比較は例えば、
x < y <= z
は(しかしz
はまったく評価されませんいずれの場合も、x < y
が発見されたときに一度だけ評価されることy
除き、x < y and y <= z
に相当し、任意に連鎖させることができます偽であること)。
私はこれを実行しました:print(True!= True)print(False!= True)。そして私が得た出力はFalse Trueです。私はあなたの疑問が何であるかは分かりません。 –
疑問は、条件が算術演算のように逐次かつ累積的に評価されると考えることに由来します。代わりに、これは実際には単一の同時チェック( 'and'演算によって連鎖される)のチェーンです。 – gandreadis
[比較のためのドキュメント](https://docs.python.org/3/reference/expressions.html#comparisons)を参照してください。 – Galen