美文网首页Python总结
Day16 内存管理和拷贝

Day16 内存管理和拷贝

作者: 风月辞寒 | 来源:发表于2019-08-12 19:48 被阅读0次

1.多继承

python中的类支持多继承(让一个类同时继承多个类);

多继承的时候子类只能继承第一个父类所有的属性和方法, 后面的父类只有字段和方法可以被继承(也就是方法名一样的时候继承的是前面的父类的方法)

2.运算符

python中所有的类型都是类, 所以所有的数据都是对象;
python中使用任意的运算符都是在调用相应的类中的相应方法, 每一个运算符对应什么方法是固定的
某种数据是否支持某个运算符操作就看这个数据类型中是否实现了对应的方法

2.1 运算符重载指的是在不同的类中实现同样的运算符对应的函数

类的对象默认情况下只支持: ==, !=

注意: < 和 > 符号只需要重载其中一个就可以

3.浅拷贝和深拷贝

3.1 直接赋值

将变量中的地址直接赋值给新的变量; 赋值后两个变量的地址相同

3.2 拷贝

不管是浅拷贝还是深拷贝都会原数据进行赋值产生新的地址

3.3 浅拷贝

字符串, 列表, 元组的切片; 对象.copy(); copy模块中的copy方法都是浅拷贝
浅拷贝只拷贝当前对象, 不会对子对象进行拷贝

4.深拷贝

copy模块中的deepcopy方法是深拷贝

4.枚举

枚举值的特点:

引用Enum类和unique值唯一装饰器
1.可以通过有意义的属性名直接显示数据
2.每个数据不能修改
3.可以做到不同数据的值是唯一的

5.内存管理

5.1 内存的开辟

内存区间分为栈区间和堆区间; 栈区间的内存自动开辟自动释放, 堆区间需要程序员手动开辟和手动释放
但是python已经将堆区间内存的开辟和释放自动化

a. 当给变量赋值时, 系统会先在堆区间中开辟空间将数据存起来, 然后再将数据在堆中的地址存到变量中, 变量存在栈区间;
b. 数字数据和字符串数据在开辟空间的时候, 会先检查内存中是否已经有这个数据, 如果有就直接使用之前的数据, 没有才开辟空间保存

5.2 内存的释放

**栈区间: **全局栈区间在程序结束后销毁, 函数栈区间在函数调用结束后销毁(自动)
堆区间: 看一个对象是否销毁, 就看这个对象的引用计数是否为0; 如果一个对象的引用计数为0, 这个对象就会销毁(垃圾回收机制)

注意: python中针对对象的循环引用已经做了处理, 程序员不需要写额外的代码来解决循环引用问题

相关文章

  • Day16 内存管理和拷贝

    1.多继承 python中的类支持多继承(让一个类同时继承多个类); 多继承的时候子类只能继承第一个父类所有的属性...

  • iOS之深拷贝与浅拷贝

    深拷贝与浅拷贝是在内存管理中非常重要的概念,理解好深拷贝和浅拷贝也有助于加深对iOS的内存管理的理解。 深拷贝与浅...

  • 内存管理 引用计数 深浅拷贝

    内存管理 引用计数 深浅拷贝常量区:可变和不可变内存管理原则/**1.谁创建。谁释放 alloc r...

  • iOS关于copy,mutablecopy;深拷贝,浅拷贝的浅见

    首先我们先搞清楚深拷贝和浅拷贝的概念吧: 深拷贝:内存地址的拷贝,重新开辟一块内存区域,和原来的内存区域不相关。 ...

  • iOS的深浅拷贝

    浅拷贝:指针拷贝,引用拷贝,指向同一内存地址深拷贝:内容拷贝,指向不同内存地址,但内容相同 1、copy和muta...

  • guorenbao iOS笔试题总结(如有错误,请指正)

    1.深拷贝和浅拷贝的区别。 答:浅拷贝只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁的时候,指向这片内存...

  • 浅拷贝和深拷贝 & copy的内存管理

    copy 本文旨在解决以下问题: 1.区别浅拷贝和深拷贝 2.copy的内存管理 3.@property中的cop...

  • NSString 为什么用 copy ? Block 为什么用

    copy 深拷贝与浅拷贝的区别, 在于是否开辟新内存,copy 只针对堆内存对象而言。 浅拷贝: 拷贝的是地址,和...

  • 拷贝与内存管理

    一、关于深拷贝和浅拷贝的总结 理解 本质上我认为区别在于复制是是指针复制(浅拷贝)还是复制到新的地址上(深拷贝) ...

  • Copy/MutableCopy

    浅拷贝: 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。 深拷贝: 深拷贝是指拷贝的具体对...

网友评论

    本文标题:Day16 内存管理和拷贝

    本文链接:https://www.haomeiwen.com/subject/kajpjctx.html