Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bila dan Mengapa bool merupakan Subkelas int dalam Python?

Bila dan Mengapa bool merupakan Subkelas int dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-10-22 06:20:31836semak imbas

When and Why is bool a Subclass of int in Python?

Mengapa bool Secara Teknikal Subkelas int dalam Python?

Semasa menggunakan perpustakaan memcached Python untuk menyimpan nilai Boolean, pada mulanya mengejutkan amati pengembaliannya sebagai integer. Penyiasatan yang lebih mendalam mendedahkan bahawa Python mentafsirkan isinstance(val, int) sebagai Benar untuk nilai bool, membayangkan bool itu entah bagaimana merupakan subkelas int.

Hubungan pelik antara bool dan int ini mempunyai penjelasan sejarah. Sebelum pengenalan jenis bool dalam Python versi 2.2 atau 2.3, perwakilan standard untuk nilai Boolean menggunakan integer 0 (Salah) dan 1 (Benar).

Untuk memastikan keserasian dengan kod sedia ada yang bergantung pada ini konvensyen, Python melaksanakan jenis bool dengan cara yang mencerminkan gelagat 0 dan 1. Ini bermakna bukan sahaja mengekalkan nilai kebenarannya tetapi juga memperluaskan fungsinya untuk menyokong semua operasi integral.

Akibatnya, bool Python taip pada dasarnya "menyamar" sebagai integer. Walaupun ada kemungkinan untuk menggunakan nilai bool dalam konteks berangka, ia tidak disyorkan. Begitu juga, menguji kesamaan bool dan integer untuk nilai kebenaran boleh membawa kepada tingkah laku yang tidak dijangka.

Evolusi sejarah ini menerangkan sebab bool ialah subkelas int dalam Python. Ia berfungsi sebagai artifak sejarah pengembangan bahasa Python dan keperluan keserasian.

Atas ialah kandungan terperinci Bila dan Mengapa bool merupakan Subkelas int dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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