Beim Speichern eines Bools in Memcached über Python-Memcached habe ich festgestellt, dass es als Ganzzahl zurückgegeben wird. Das Überprüfen des Codes der Bibliothek hat mir gezeigt, dass es einen Ort isinstance(val, int)
gibt, an dem überprüft wird, um den Wert als Ganzzahl zu kennzeichnen.
Also habe ich es in der Python-Shell getestet und Folgendes festgestellt:
>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Aber warum genau ist bool
eine Unterklasse von int
?
Das macht irgendwie Sinn, weil ein Boolescher Wert im Grunde genommen ein int ist, das nur zwei Werte annehmen kann, aber viel weniger Operationen / Speicherplatz benötigt als eine tatsächliche Ganzzahl (keine Arithmetik, nur ein einziges Bit Speicherplatz) ....
bool
s verkleinert , da in Python alles ein Objekt ist . Wenn Sie sich für die Speichernutzung interessieren, verwenden Sie zunächst eine andere Sprache.Antworten:
Aus einem Kommentar auf http://www.peterbe.com/plog/bool-is-int
Dank geht an dman13 für diese nette Erklärung.
quelle
sum([f(value) for value in values])
denenf(x)
sich eine Art Filterfunktion befindet, und Sie müssen sehen, wie viele Werte den Filter passieren.sum(1 for value in values if f(value))
, aber ich habe tatsächlich angesehene Leute gesehen, die sich für numerische Operationen an Bools einsetzen.Siehe PEP 285 - Hinzufügen eines Bool-Typs . Relevent Passage:
quelle
Kann auch verwendet werden
help
, um denBool
Wert von in der Konsole zu überprüfen :Hilfe (wahr)
Hilfe (falsch)
quelle