8

3 つのオブジェクト間の等価性をチェックするこれら 2 つの方法に、計算上の違いはありますか?

と の 2 つの変数がxありyます。私がこれをするとします:

>>> x = 5
>>> y = 5
>>> x == y == 5
True

それは次のものとは異なりますか:

>>> x = 5
>>> y = 5
>>> x == y and x == 5
True

もしそうならどうFalseですか?

>>> x = 5
>>> y = 5
>>> x == y == 4
False

と:

>>> x = 5
>>> y = 5
>>> x == y and x == 4
False

計算方法に違いはありますか?

また、どのように機能しx == y == zますか?

前もって感謝します!

4

2 に答える 2

17

Python では連鎖比較があるため、これら 2 つの形式は同等です。

x == y == z
x == y and y == z

ただし、最初の y は 1 回だけ評価されます。

これは、次のように書くこともできることを意味します。

0 < x < 10
10 >= z >= 2

次のような紛らわしいものを書くこともできます。

a < b == c is d   # Don't  do this

初心者は時々これにつまずくことがあります:

a < 100 is True   # Definitely don't do this!

これは次と同じであるため、常に false になります。

a < 100 and 100 is True   # Now we see the violence inherent in the system!
于 2012-12-09T22:38:10.250 に答える