内存管理
Python内存管理原理
内存中的两个特殊区域:
栈:栈中的内存系统自动管理(内存的开辟和内存的释放) --- 作用域结束,内存就释放
堆:堆中的内存都需要写程序去开辟和释放的(Python中这个过程也已经自动化了)
原理:堆中的数据到底是什么时候释放的?
看一个值有几个引用,当一个值没有引用的时候,对象对应的内存空间就会被释放
(引用计数机制)
0+1-1
引用:存储对象地址的变量
class Person:
def __init__(self, name):
self.name = name
def run(self):
print('%s跑' % self.name)
if __name__ == '__main__':
p = Person('p')
# 删除对象唯一的引用,对象就会被销毁
del p
# p.run()
# 将对象作为值赋给其它变量,对象的引用+1
p1 = Person('p1')
p2 = p1
del p2
p1.run()
p1 = 'a'
# 将对象添加到容器中,对象的引用会+1
p3 = Person('P3')
lists = [p3,100]
del p3
lists[0].run()
# del lists
# del lists[0]
lists[0] = None
包的使用
封装:
对一个功能的封装 --> 函数
对多个功能的封装 --> 模块or类
对多个数据进行封装 --> 类or字典
对多个类进行封装 --> 模块
对多个模块进行封装 --> 包(文件夹,含:init文件)
# 导入某个包中的某个模块
from package1 import math
# 导入某个包中的某个模块的某个函数
from package1.file import write