Cara Nilai Bukan Boolean Berinteraksi dengan "dan" dan "atau" dalam Python
Soalan:
Dalam Python, ia diperhatikan bahawa pengendali logik "dan" dan "atau" mempamerkan tingkah laku luar biasa apabila beroperasi pada nilai bukan boolean. Sebagai contoh, ungkapan "10 dan 7-2" mengembalikan 5 dan bukannya Benar atau Salah. Terangkan kelakuan ini dan implikasinya dalam pengaturcaraan Python.
Jawapan:
Operator logik Python "dan" dan "atau" mempunyai peraturan unik untuk mengendalikan nilai bukan boolean:
"dan" Gelagat:
- Jika mana-mana nilai dalam ungkapan adalah Palsu, "False" dikembalikan.
- Jika tiada nilai Palsu, nilai terakhir dalam ungkapan dikembalikan.
"atau" Gelagat:
- Jika sebarang nilai dalam ungkapan adalah Benar, "Benar" dikembalikan.
- Jika tiada nilai adalah Benar, nilai terakhir dalam ungkapan dikembalikan.
Pertimbangkan contoh ungkapan "10 dan 7-2":
- 7-2 menilai kepada 5 (nilai bukan boolean).
- Tiada nilai Palsu dalam ungkapan, jadi "dan" mengembalikan yang terakhir nilai, iaitu 5.
Begitu juga, untuk "10 atau 7-2":
- 7-2 menilai kepada 5 (nilai bukan boolean).
- Terdapat nilai Benar dalam ungkapan (10), jadi "atau" mengembalikan 10.
Legitimasi dan Gotchas:
Tingkah laku ini adalah sah dan biasa digunakan. Walau bagaimanapun, ia boleh membawa kepada hasil yang tidak dijangka jika tidak difahami dengan betul. Gotcha yang perlu diberi perhatian termasuk:
-
Nilai Kebenaran/Falsy Tersirat: Sesetengah nilai bukan boolean, seperti rentetan kosong, senarai kosong dan Tiada, secara tersirat dianggap sebagai Palsu , manakala nombor bukan sifar adalah Benar secara tersirat.
-
Operan Susunan: Susunan operan penting dengan "dan" dan "atau". Dalam contoh di atas, "10 dan 7-2" mengembalikan 5, tetapi "7-2 dan 10" mengembalikan 8 (sejak nilai Palsu tersirat bagi 5 litar pintas "dan").
-
Penukaran Jenis: "dan" dan "atau" akan cuba menukar operan bukan boolean kepada nilai boolean. Ini boleh membawa kepada hasil yang tidak dijangka dalam kes seperti "0 dan '0' == Benar" (memandangkan rentetan '0' secara tersirat dianggap sebagai Palsu).
Atas ialah kandungan terperinci Bagaimanakah Pengendali 'dan' dan 'atau' Python Mengendalikan Nilai Bukan Boolean?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!