なぜ bool は技術的に Python の int のサブクラスなのでしょうか?
Python の memcached ライブラリを使用してブール値を保存すると、最初は驚くべきことに、整数として返されることを観察してください。さらに詳しく調査すると、Python は isinstance(val, int) を bool 値に対して True として解釈することが明らかになり、bool が何らかの形で int のサブクラスであることを意味します。
bool と int の間のこの奇妙な関係には歴史的な説明があります。 Python バージョン 2.2 または 2.3 で bool 型が導入される前は、ブール値の標準表現には整数 0 (False) と 1 (True) が使用されていました。
これに依存する既存のコードとの互換性を確保するため。慣例として、Python は 0 と 1 の動作を反映する方法で bool 型を実装しました。これは、真理値を保持するだけでなく、すべての整数演算をサポートするように機能を拡張することも意味しました。
その結果、Python の bool はtype は基本的に整数として「マスカレード」します。数値コンテキストでブール値を使用することは可能ですが、お勧めできません。同様に、真理値について bool と integer が等しいかどうかをテストすると、予期しない動作が発生する可能性があります。
この歴史的な進化は、Python で bool が int のサブクラスである理由を説明します。これは、Python の言語拡張と互換性要件の歴史的な成果物として機能します。
以上がbool が Python の int のサブクラスになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。