首頁  >  文章  >  後端開發  >  Python 中 bool 何時以及為何成為 int 的子類別?

Python 中 bool 何時以及為何成為 int 的子類別?

Susan Sarandon
Susan Sarandon原創
2024-10-22 06:20:31836瀏覽

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

為什麼 bool 從技術上來說是 Python 中 int 的子類別?

當使用 Python 的 memcached 函式庫儲存布林值時,一開始會感到驚訝觀察其傳回的整數。更深入的調查表明,Python 將 bool 值的 isinstance(val, int) 解釋為 True,這意味著 bool 在某種程度上是 int 的子類別。

bool 和 int 之間的這種特殊關係有歷史解釋。在 Python 版本 2.2 或 2.3 中引入 bool 類型之前,布林值的標準表示是使用整數 0 (False) 和 1 (True)。

為了確保與依賴於此的現有程式碼的兼容性按照約定,Python 以鏡像 0 和 1 行為的方式實作 bool 類型。這意味著不僅保留它們的真值,而且還擴展它們的功能以支援所有積分運算。

因此,Python 的 bool型本質上「偽裝」為整數。雖然可以在數字上下文中使用布林值,但不建議這樣做。同樣,測試 bool 和整數的真值是否相等可能會導致意外行為。

這段歷史演變解釋了為什麼 bool 是 Python 中 int 的子類別。它作為Python語言擴展和兼容性需求的歷史神器。

以上是Python 中 bool 何時以及為何成為 int 的子類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn