Teka-teki Keutamaan Operator dalam Python: Membongkar Misteri 'dalam' dan Perbandingan
Tingkah laku membingungkan yang diperhatikan dengan pengendali 'dalam' Python dan perbandingan telah menyebabkan ramai yang bingung. Tetapi di bawah permukaannya terdapat interaksi halus antara keutamaan operator dan rantaian ekspresi.
Keutamaan pengendali menentukan susunan operasi dinilai dalam ungkapan. Dalam Python, operator 'in' dan perbandingan (cth., '==') mempunyai keutamaan yang sama. Akibatnya, ia diproses dari kiri ke kanan.
Namun, keadaan menjadi lebih rumit apabila ekspresi berantai terlibat. Perangkap biasa timbul apabila cuba membandingkan hasil operasi 'dalam' dengan nilai lain. Pertimbangkan contoh berikut:
<code class="python">'1' in '11' == True</code>
Anehnya, ungkapan ini dinilai sebagai Salah. Sebabnya terletak pada rantaian 'in' dan '=='. Ungkapan dihuraikan dengan berkesan sebagai:
<code class="python">('1' in '11') and ('11' == True)</code>
Pengendali 'dalam' mengesahkan sama ada '1' ialah ahli '11', menghasilkan Benar. Walau bagaimanapun, perbandingan kedua, '11' == Benar, menghasilkan Salah. Oleh itu, ungkapan keseluruhan dinilai kepada Salah.
Untuk mendapatkan nilai True yang diingini, seseorang mesti mengubah susunan keutamaan secara eksplisit. Ini boleh dicapai menggunakan kurungan:
<code class="python">('1' in '11') == True</code>
Dengan melampirkan operasi 'dalam' dalam kurungan, ungkapan itu dinilai dalam skopnya sebelum membandingkannya dengan Benar. Perubahan ini menghasilkan hasil Benar seperti yang dimaksudkan.
Memahami keutamaan operator dan rantaian adalah penting dalam mentafsir gelagat ekspresi Python yang kompleks. Ia memberi kuasa kepada pembangun untuk menjangka urutan operasi dan mengelakkan perangkap yang tidak dijangka.
Atas ialah kandungan terperinci Mengapakah \'1\' dalam \'11” == Nilai Benar kepada Salah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!