以下のようにアイドル状態でテストしていますが、何かがおかしい..
>>> print 1<>1
False OK
>>> print 1<>0
True OK
>>> print False | True
True OK
>>> print False | 1<>0
True OK
>>> print 1<>1 | 1<>0
False WHY ???
以下のようにアイドル状態でテストしていますが、何かがおかしい..
>>> print 1<>1
False OK
>>> print 1<>0
True OK
>>> print False | True
True OK
>>> print False | 1<>0
True OK
>>> print 1<>1 | 1<>0
False WHY ???
あなたのコードは次のように解釈されています:
>>> print 1 <> (1 | 1) <> 0
False
これは、提供されたリンクに詳しく記載されている順序の優先順位によるものです。
ほとんどの場合、ビットごとの OR 演算子は、等しくない演算子よりも優先順位が高くなります<>
(これは非推奨であるため、Python 3 には存在しないことに注意してください。詳細については、こちらを参照してください)。したがって、最初に評価され、次に<>
s が解釈されます。
それは演算子の優先順位に関連する問題です:
>>> (1<>1) | (1<>0)
True
|
より優先順位が高い<>
。
優先順位。あなたのコマンドは次のように解釈されています1 <> (1 | 1) <> 0
ちなみに、<>
比較には使用しないでください。!=
代わりに使用してください。
詳細については、オペレーターに関するドキュメントを確認してください。