Python Precedence and Chaining: Mengapa Keputusan Yang Tidak Dijangkakan dalam (1 dalam [1,0] == True)?
Dalam Python, ungkapan (1 dalam [1,0] == Benar) menilai kepada Salah, yang mungkin kelihatan berlawanan dengan intuisi. Untuk memahami sebabnya, adalah penting untuk mengetahui tentang keutamaan operator dan rantaian dalam Python.
Keutamaan pengendali menentukan susunan pengendali yang berbeza dalam ungkapan dinilai. Dalam kes ini, pengendali dalam mempunyai keutamaan yang lebih tinggi daripada pengendali perbandingan ==. Jadi, ungkapan itu dihuraikan sebagai (1 dalam [1,0]) == Benar, di mana (1 dalam [1,0]) dinilai dahulu.
Apabila jurubahasa menilai (1 dalam [1, 0]), ia mengembalikan Benar kerana 1 berada dalam senarai [1,0]. Walau bagaimanapun, ungkapan itu tidak berakhir di situ.
Python menggunakan rantaian untuk pengendali perbandingan. Rantaian membolehkan berbilang perbandingan dilakukan dalam satu ungkapan. Dalam kes ini, ungkapan (1 dalam [1,0]) == Benar boleh diterjemahkan kepada:
(1 dalam [1,0]) dan ([1,0] == Benar)
Selepas menilai (1 dalam [1,0]) kepada Benar, jurubahasa meneruskan untuk menilai ([1,0] == Benar). Perbandingan ini menilai kepada Salah kerana [1,0] ialah senarai dan Benar ialah nilai boolean.
Oleh itu, ungkapan keseluruhan menilai kepada Salah kerana kedua-dua syarat dalam perbandingan berantai tidak dipenuhi. Ia bukan semata-mata soal keutamaan, sebaliknya gabungan keutamaan dan rantaian yang membawa kepada keputusan ini.
Atas ialah kandungan terperinci Mengapa Adakah (1 dalam [1, 0] == Benar) Menilai kepada Salah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!