1. python内存管理机制(自动)
引用计数:
每个变量存储对象地址时,引用计数都会自增1, 每个变量与对象引用断开时,引用计数都会自减1。 如果引用计数为0,对象被释放。 缺点:循环引用
标记清除:
扫描内存,查看是否存在无法访问的内存空间。 缺点:耗时长
分代回收:
将内存分为"年轻代",“中年代”,“老年代”。 每代内存告急时,都会采用标记清除:将有用的数据升代。
内存优化:
尽少产生垃圾,对象池,手动回收(慎用)
2. 对象池:每次创建对象时,都会判断池中是否具有相同对象
如果有,则直接返回该对象地址 如果没有,则开辟空间创建新对象。 优点:提高内存的利用率
3. 函数参数
实际参数:调用函数时
位置实参:函数名(数据1,数据2) 序列实参:函数名(*序列) 关键字实参:函数名(形参名1=数据1,形参名2=数据2) 字典实参:函数名(**字典)
形式参数:创建函数时
默认参数:def 函数名(形参名1=默认值,形参名2=默认值) 位置形参:def 函数名(形参名1,形参名2) 星号元组形参:def 函数名(args) 命名关键字形参:def 函数名(,形参名1,形参名2) def 函数名(*args,形参名1,形参名2) 双星号字典形参:def 函数名(**kwargs)
list01 = [1,2,3]
list02 = list01
list03 = list01
list04 = list01
list01 = []
del list02,list03
list04 = 0
str_result = []
for item in range(1000):
str_result.append(str(item))
print(str_result)
list01 = []
list02 = []
list01.append(list02)
list02.append(list01)
del list01,list02
a = ["a"]
b = ["a"]
c = ["a"]
print(id(a),id(b),id(c))
|