Heim  >  Artikel  >  Backend-Entwicklung  >  Wann und warum ist bool eine Unterklasse von int in Python?

Wann und warum ist bool eine Unterklasse von int in Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-22 06:20:31836Durchsuche

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

Warum ist bool technisch gesehen eine Unterklasse von int in Python?

Bei der Verwendung der Memcached-Bibliothek von Python zum Speichern eines booleschen Werts ist es zunächst überraschend Beobachten Sie die Rückgabe als Ganzzahl. Eine eingehendere Untersuchung zeigt, dass Python isinstance(val, int) als True für einen bool-Wert interpretiert, was impliziert, dass bool irgendwie eine Unterklasse von int ist.

Diese eigenartige Beziehung zwischen bool und int hat eine historische Erklärung. Vor der Einführung des Bool-Typs in den Python-Versionen 2.2 oder 2.3 verwendete die Standarddarstellung für Boolesche Werte die Ganzzahlen 0 (False) und 1 (True).

Um die Kompatibilität mit vorhandenem Code sicherzustellen, der darauf beruhte Konvention implementierte Python den Bool-Typ auf eine Weise, die das Verhalten von 0 und 1 widerspiegelte. Dies bedeutete nicht nur, dass ihre Wahrheitswerte erhalten blieben, sondern auch ihre Funktionalität erweitert wurde, um alle Integraloperationen zu unterstützen.

Als Ergebnis wurde Pythons Bool Typ „maskiert“ im Wesentlichen als Ganzzahl. Die Verwendung von Bool-Werten in numerischen Kontexten ist zwar möglich, wird jedoch nicht empfohlen. Ebenso kann die Prüfung der Gleichheit eines Bools und einer Ganzzahl auf den Wahrheitswert zu unerwartetem Verhalten führen.

Diese historische Entwicklung erklärt, warum Bool eine Unterklasse von Int in Python ist. Es dient als historisches Artefakt der Spracherweiterungs- und Kompatibilitätsanforderungen von Python.

Das obige ist der detaillierte Inhalt vonWann und warum ist bool eine Unterklasse von int in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn