В Python, если я print
разных типов данных, разделенных запятыми, все они будут действовать в соответствии со способами __str__
(или, возможно, __repr__
) и распечатать красивую симпатичную строку для меня.Длина печати Python ИЛИ получение размера нескольких переменных сразу
У меня есть куча переменных, таких как data1, data2...
, и я хотел бы получить их общий приблизительный размер. Я знаю, что:
не все переменные имеют полезный
sys.getsizeof
(я хочу знать размер сохраняется, а не размер контейнера.) -Благодаря Martijn Питерсдлина каждая из печатных переменных является достаточно хорошей оценкой размера для моих целей.
Я хотел бы избежать использования разных типов данных по отдельности. Есть ли способ использовать функцию, например print
, чтобы получить общую длину данных? Я считаю маловероятным, что что-то вроде этого еще не встроено в Python.
>>> obj.data1 = [1, 2, 3, 4, 5]
>>> obj.data2 = {'a': 1, 'b':2, 'c':3}
>>> obj.data3 = u'have you seen my crossbow?'
>>> obj.data4 = 'trapped on the surface of a sphere'
>>> obj.data5 = 42
>>> obj.data6 = <fake a.b instance at 0x88888>
>>> print obj.data1, obj.data2, obj.data3, obj.data4, obj.data5, obj.data6
[1, 2, 3, 4, 5] {'a': 1, 'c': 3, 'b': 2} have you seen my crossbow? trapped on the surface of a sphere 42 meh
Я ищу что-то вроде:
printlen(obj.data1, obj.data2, obj.data3, obj.data4, obj.data5, obj.data6)
109
Я знаю, что большинство из вас могли бы написать что-то вроде этого, но я в основном с просьбой, если Python имеет какой-либо встроенный способ сделать это , Отличное решение показало бы мне способ, чтобы return
строка, которую print
печатает в Python 2.7. (Что-то вроде print_r
в PHP, которое я иначе чувствую, полностью уступает Python.) Я планирую сделать это программно со многими объектами, у которых есть предварительно заполненные переменные, поэтому не нужно писать во временный файл или что-то в этом роде.
Спасибо!
В качестве побочного примечания этот вопрос возник из-за необходимости рассчитать приблизительный общий размер переменных в классе, который строится из неизвестных данных. Если у вас есть способ получить общий размер не подлежащих вызову элементов в классе (честно говоря, общий размер тоже будет работать), это решение будет еще лучше. Я не сделал этого основного вопроса, потому что мне кажется, что Python не поддерживает такую вещь. Если да, то ура!
Может ли быть более полезным профилировщик? – doctorlove
@doctorlove Потенциально, но это действительно просто промежуточный шаг, чтобы увидеть, достаточно ли моего среднего объекта, чтобы я мог переместить все их в базу данных. Было бы неплохо иметь метод класса, который просто дал мне приблизительный размер. – vroomfondel