在Python 2中,一个空字符串占用确切的37个字节。
在Python 3.6中,相同的调用将输出49个字节。
>>>> print sys.getsizeof('')
37
在Python 3.6中,相同的调用将输出49个字节。
>>>> print(sys.getsizeof(''))
49
我原以为这是因为在Python 3中,所有字符串都是Unicode编码。但是,令我惊讶的是,下面是一些令人困惑的输出:
Python 2.7
>>>> print sys.getsizeof(u'')
52
>>>> print sys.getsizeof(u'1')
56
Python 3.6
>>>>print(sys.getsizeof(''))
49
>>>>print(sys.getsizeof('1'))
50
- 空字符串大小不一样。
- 在Python 2中添加一个字符需要额外4个字节,在Python 3中只需要一个字节。
为什么这两个版本的内存占用不同呢?
编辑
由于不同的Python 3版本之间存在差异,因此我指定了我的Python环境的确切版本。