Melihat pembongkaran (byte kode) itu jelas mengapa 0 < 0 == 0adalah False.
Berikut adalah analisis dari ungkapan ini:
>>>import dis
>>>def f():
... 0 < 0 == 0
>>>dis.dis(f)
2 0 LOAD_CONST 1 (0)
3 LOAD_CONST 1 (0)
6 DUP_TOP
7 ROT_THREE
8 COMPARE_OP 0 (<)
11 JUMP_IF_FALSE_OR_POP 23
14 LOAD_CONST 1 (0)
17 COMPARE_OP 2 (==)
20 JUMP_FORWARD 2 (to 25)
>> 23 ROT_TWO
24 POP_TOP
>> 25 POP_TOP
26 LOAD_CONST 0 (None)
29 RETURN_VALUE
Perhatikan baris 0-8: Baris-baris ini memeriksa apakah 0 < 0yang jelas kembali Falseke tumpukan python.
Sekarang perhatikan baris 11: JUMP_IF_FALSE_OR_POP 23
Ini berarti bahwa jika 0 < 0kembali Falsemelakukan lompatan ke baris 23.
Sekarang, 0 < 0adalah False, jadi lompatan diambil, yang meninggalkan tumpukan dengan Falseyang merupakan nilai kembalian untuk seluruh ekspresi 0 < 0 == 0, meskipun == 0bagian tersebut bahkan tidak dicentang.
Jadi, untuk menyimpulkan, jawabannya seperti yang dikatakan dalam jawaban lain atas pertanyaan ini.
0 < 0 == 0memiliki arti khusus. Kompilator mengevaluasi ini menjadi dua istilah: 0 < 0dan 0 == 0. Seperti halnya ekspresi boolean kompleks di andantara mereka, jika yang pertama gagal maka yang kedua bahkan tidak dicentang.
Berharap ini mencerahkan segalanya, dan saya sangat berharap metode yang saya gunakan untuk menganalisis perilaku tak terduga ini akan mendorong orang lain untuk mencoba hal yang sama di masa depan.