Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah `0 < 0 == 0` Menilai kepada `False` dalam Python?

Mengapakah `0 < 0 == 0` Menilai kepada `False` dalam Python?

DDD
Lepaskan: 2024-12-09 03:27:12
asal
711 orang telah melayarinya

Why Does `0 < 0 == 0` Evaluate to `False` in Python?

Perbandingan Berantai dalam Python: Membongkar Misteri 0 < 0 == 0 Falsehood

Dalam kedalaman kod perpustakaan standard Python, terdapat binaan yang membingungkan dalam Queue.py daripada Python 2.6:

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
Salin selepas log masuk

Mengapa ungkapan ini, 0 < 0 == 0, hasilkan Salah? Pada pandangan pertama, nampaknya berlawanan dengan intuisi, kerana 0 jelas kurang daripada 0, dan 0 == 0 adalah Benar.

Perbandingan Berantai: Pintasan Python

Python mempunyai ciri unik yang dipanggil "perbandingan berantai," yang menjadikan perbandingan julat menyatakan lebih ringkas. Sebagai contoh, perkara berikut adalah bersamaan dengan menggunakan perbandingan berantai:

0 < x <= 5
Salin selepas log masuk

Secara dalaman, perbandingan berantai ini ditafsirkan secara berbeza. Python menilai ungkapan dari kiri ke kanan dan mengembalikan nilai perbandingan pertama yang menilai kepada False. Dalam kes kami, 0 < 0 menilai kepada False, jadi penilaian == 0 yang berikutnya adalah tidak relevan dan dengan itu ungkapan mengembalikan False.

Sebaliknya, apabila kurungan diperkenalkan, mereka memaksa penilaian ungkapan di dalamnya untuk dilengkapkan sebelum yang seterusnya perbandingan digunakan. Ini menafikan tingkah laku perbandingan berantai. Hasilnya, kami mendapat nilai True yang dijangkakan apabila kurungan ditambahkan:

(0 < 0) == 0
0 < (0 == 0)
Salin selepas log masuk

Oleh itu, ungkapan kaedah full(), 0 < self.maxsize == self._qsize(), menilai kepada False jika self.maxsize ialah 0, menunjukkan bahawa baris gilir tidak pernah penuh apabila had saiz ditetapkan kepada 0.

Atas ialah kandungan terperinci Mengapakah `0 < 0 == 0` Menilai kepada `False` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan