使用python解释器,我找到了__sizeof__方法。 Docstrings说这个方法返回给定对象的 bytes 大小。
然后,我问自己:“int
的大小是什么?16,32?”,但是,令人惊讶的是,它是28 ......同样,浮点数在内存中需要4个八位字节。另外,内存中空字符串的大小为49个字节。最后,我很惊讶地看到空列表,元组,字典,一组在内存中占用40,24,264和200字节,而如果我们只为这些类型中的每一类添加一个int
,则大小为8列表和元组的字节数,并且不会改变dict和set ...最后,如果我们创建简单的类,即使我们添加新的attributs和方法,它们的大小仍然是32字节,但简单的函数需要112字节...
为什么这些类型会占用这个奇怪的内存量?为什么在不同的容器中添加一个新的int不会在内存中占用相同的位置,而为类添加新的attribut不会修改它的大小?与经典对象相比,为什么函数在内存中占据那么多位置?