# 字符串所占内存为字符串元素实际所占内存
import sys
s = ""
print("size of '%s' in bytes: %d" % (s, sys.getsizeof(s)))
for i in range(3):
s = s + "a" # 字符串每增加一个元素,占用的内存增加一个字节
print("size of '%s' in bytes: %d" % (s, sys.getsizeof(s)))
容器所占内存
"""
元组、列表、字典和集合都是容器,sys.getsizeof返回的内存大小为容器结构的大小,不包含容器中元素的大小。
如,sys.getsizeof(tuple)返回的元组大小为元组结构所占内存大小,与元组的元素类型无关。
元组每增加一个元素所占内存增加8个字节(64位系统,内存地址为8字节),即仅增加一个对象引用的大小。
"""
import sys
print("size in bytes:", sys.getsizeof(2**1000)) # 整数2^1000所占内存
print("size in bytes:", sys.getsizeof(())) # 空元组所占内存
print("size in bytes:", sys.getsizeof((2**1000,))) # 单个元素元组所占内存
print("size in bytes:", sys.getsizeof((2**1000, 2**1000))) # 两个元素元组所占内存
print("size in bytes:", sys.getsizeof((2**1000, 2**1000, 2**1000))) # 三个元素元组所占内存
print()
element = 1
print("size in bytes:", sys.getsizeof(element)) # 整数1所占内存
print("size in bytes:", sys.getsizeof(())) # 空元组所占内存
print("size in bytes:", sys.getsizeof((element,))) # 单个元素元组所占内存
print("size in bytes:", sys.getsizeof((element, element))) # 两个元素元组所占内存
print("size in bytes:", sys.getsizeof((element, element, element))) # 三个元素元组所占内存