为什么将值附加到列表比列表文字需要更多的存储空间?

Sor*_*ary 5 python list

我提供了 4 种不同的方法来用相同的值填充这些列表:

var = 'a'
print('var id: ', id(var))                # var id:  1561191205488

lst1 = [var]
lst2 = ['a']
lst3 = []
lst3.append(var)
lst4 = []
lst4.append('a')

print(lst1.__sizeof__(), id(lst1[0]))      # 48 1561191205488
print(lst2.__sizeof__(), id(lst2[0]))      # 48 1561191205488
print(lst3.__sizeof__(), id(lst3[0]))      # 72 1561191205488
print(lst4.__sizeof__(), id(lst4[0]))      # 72 1561191205488

print(lst1 == lst4 == lst3 == lst4)        # True
Run Code Online (Sandbox Code Playgroud)

我知道在Python中所有内容都是通过引用传递的,并且在这些列表中,列表存储的实际值是对对象“a”的引用,并且它们都是相同的(正如我打印的ID一样)。

我预计至少“lst2”和“lst4”以及“lst1”和“lst3”具有相同的内存使用量,但事实并非如此!看来追加方法的作用不仅仅是存储引用......

谁能告诉我这里发生了什么事吗?