[解決済み] Pythonで0 < 0 == 0という式がFalseを返すのはなぜですか?
2022-05-17 11:15:10
疑問点
Python 2.6のQueue.pyを見ていると、ちょっと不思議な構成が見つかりました。
def full(self):
"""Return True if the queue is full, False otherwise
(not reliable!)."""
self.mutex.acquire()
n = 0 < self.maxsize == self._qsize()
self.mutex.release()
return n
もし
maxsize
が 0 の場合、キューが満杯になることはありません。
私の質問は、この場合どのように動作するのでしょうか?どのように
0 < 0 == 0
は偽とみなされるのですか?
>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
どのように解決するのですか?
Pythonは範囲比較を簡単に表現するために、関係演算子の並びに対して特殊なケース処理を行うようになっていると思います。そのため、Pythonでは関係演算子列の大文字小文字を区別しています。
0 < x <= 5
と言うより
(0 < x) and (x <= 5)
.
これらは 連鎖比較 . そして、これはそのためのドキュメントへのリンクです。
あなたが話す他のケースでは、括弧は一方の関係演算子を他方の関係演算子の前に適用させるので、もはや連鎖した比較ではありません。また
True
と
False
は整数値であるため、括弧で囲まれたバージョンではそのような答えが得られます。
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み] not(True) in [False, True]」はなぜFalseを返すのですか?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない