内存管理
赋值语句内存管理
def extend_list(val,l=[]):
print(l,id(l)) #打印列表l及其地址
l.append(val)
print(l,id(l)) #打印列表l及其地址
return l
list1 = extend_list(10)
list2 = extend_list(123,[])
list3 = extend_list('a')
print(list1,list2,list3)
list1和list3共用一个地址。
运行结果:
[] 2392663771264
[10] 2392663771264
[] 2392664036032
[123] 2392664036032
[10] 2392663771264
[10, 'a'] 2392663771264
[10, 'a'] [123] [10, 'a']
进程已结束,退出代码0
垃圾回收机制
class Cat:
def __init__(self):
print(f"对象产生了,其内存为{id(self)}")
def __del__(self):
print(f"对象删除了,其内存为{id(self)}")
def f0():
"""自动回收内存"""
while True:
c = Cat()
def f1():
"""一直在引用,不会被回收,内存无限增长"""
l = [] #定义空列表
while True:
c = Cat()
l.append(c)
if __name__ == '__main__': #相当于C语言中的main函数
f0()