Функция getsizeof () возвращает различный вывод в Python 2 и Python 3 - PullRequest
0 голосов
/ 08 октября 2018

Маленький код:

import sys

x = True

print(sys.getsizeof(x))

Выход Python 2:

24

Выход Python 3:

28

Почему выходные данные getsizeof() функционируют по-разному в Python 2 и Python 3?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Для встроенных типов sys.getsizeof() возвращает в основном подробности реализации используемой вами реализации Python.

Это означает, что даже для той же версии Python, вы можете увидеть разные размеры для разных реализаций / платформ / сборок ... Следовательно, вы не можете полагаться на конкретные ответы - и тем более ожидать, что они останутся постоянными!

Наконец, обратите внимание, что sys.getsizeof()не является оператором;это просто функция модуля sys.

0 голосов
/ 08 октября 2018

На Python 2 и Python 3 bool является подклассом int и True == 1.Однако в Python 3 int является эквивалентом Python 2 long и хранит целые числа в представлении произвольной точности.

В выполняемой сборке Python 3 это представление происходитчтобы сохранить значение 1 на 4 байта больше, чем то, что принимает представление int в вашей сборке Python 2. Скорее всего, из-за поля ob_size, в котором хранится длина представления произвольной точности.

Если это действительно имеет значение для программы, которую вы пишете, вы, вероятно, делаете что-то действительно сумасшедшее и / или неправильно используете getsizeof.

...