Podczas przechowywania bool w memcached poprzez python-memcached zauważyłem, że jest on zwracany jako liczba całkowita. Sprawdzenie kodu biblioteki pokazało mi, że jest miejsce, w którym isinstance(val, int)
zaznaczone jest oflagowanie wartości jako liczby całkowitej.
Przetestowałem to w powłoce Pythona i zauważyłem, co następuje:
>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Ale dlaczego dokładnie jest bool
podklasa int
?
Ma to sens, ponieważ w zasadzie wartość logiczna jest wartością typu int, która może przyjmować tylko dwie wartości, ale wymaga znacznie mniej operacji / miejsca niż rzeczywista liczba całkowita (bez arytmetyki, tylko jeden bit miejsca w pamięci) ....