為什麼 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中文網其他相關文章!