在 Python 中,如果我print
用逗号分隔不同的数据类型,它们都将根据它们的__str__
(或可能的__repr__
)方法行事,并为我打印出一个漂亮漂亮的字符串。
我有一堆像data1, data2...
下面这样的变量,我很想得到它们的总近似大小。我知道:
并非所有变量都有用
sys.getsizeof
(我想知道存储的大小,而不是容器的大小。)-感谢 Martijn Pieters每个打印变量的长度对于我的目的来说是一个足够好的大小估计
我想避免单独处理不同的数据类型。有什么方法可以利用函数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 是否有任何内置的方法可以做到这一点。一个很好的解决方案将向我展示一种在 Python 2.7return
中打印的字符串的方法。print
(类似于print_r
PHP 中的东西,否则我觉得它完全不如 Python。)我计划以编程方式对许多具有预填充变量的对象进行此操作,因此不要写入临时文件或类似的东西。
谢谢!
作为旁注,这个问题源于需要计算从未知数据构建的类中变量的近似总大小。如果您有办法获得类中不可调用项目的总大小(老实说,总大小也可以),那么该解决方案会更好。我没有把它作为我的主要问题,因为在我看来 Python 不支持这样的东西。如果是这样,万岁!