1

以下のようにアイドル状態でテストしていますが、何かがおかしい..

>>> 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 ???
4

4 に答える 4

2

あなたのコードは次のように解釈されています:

>>> print 1 <> (1 | 1) <> 0
False

これは、提供されたリンクに詳しく記載されている順序の優先順位によるものです。

ほとんどの場合、ビットごとの OR 演算子は、等しくない演算子よりも優先順位が高くなります<>(これは非推奨であるため、Python 3 には存在しないことに注意してください。詳細については、こちらを参照してください)。したがって、最初に評価され、次に<>s が解釈されます。

于 2013-08-29T11:49:01.833 に答える
1

それは演算子の優先順位に関連する問題です:

>>> (1<>1) | (1<>0)
True

|より優先順位が高い<>

于 2013-08-29T11:47:43.800 に答える
1

優先順位。あなたのコマンドは次のように解釈されています1 <> (1 | 1) <> 0

ちなみに、<>比較には使用しないでください。!=代わりに使用してください。

詳細については、オペレーターに関するドキュメントを確認してください。

于 2013-08-29T11:48:17.940 に答える