day_16_运算符重载 python中所有的数据类型都是类,数据都是对象 所有的运算符对应的操作,本质都是在调用数据类型对应的魔法方法。(每个运算符都对应一个固定的魔法方法) copy 一个变量直接给另外一个变量赋值:直接将地址赋值,赋值完后两个变量指向同一块内存区域,并且相互影响 拷贝基本原理:将被拷贝的对象复制一份产生一个新的数据然后将新的数据的地址返回。 浅拷贝 列表或字典的copy方法是浅拷贝、切片也是浅拷贝 copy.copy(对象) - 赋值指定的对象,产生一个新的对象(不会复制子对象) 深拷贝 copy.deepcopy(对象) - 复制指定对象产生一个新的对象。如果这个对象中有其他的对象,子对象也会被复制 内存管理 1.数据的存储(内存的开辟) python的变量都存储在栈区间,对象都在堆区间 声明变量或者给变量赋值,是现在内存(堆)中开辟存储数据,然后将数据地址保存在变量中 但是数字和字符串特殊,如果是用数字或字符串给变量赋值,不会直接开辟空间保存数据,而是先在内存检测这个数据之前是否已经存储过,如果已经存储直接用上次保存的数据,没有存储才会开辟新的空间保存数据。 2. 内存的释放 2-1 引用计数 python中每个对象都有一个属性叫引用计数,用来保存当前对象的引用的个数 2-2 python中的垃圾回收机制来判断一个对象是否销毁,就看这个对象的引用计数是否为零,如果为零就会被销毁。 让引用计数增加 :继续赋值 让引用计数减少 :赋值其它的值或者删除