Python知识(二)

1)面向对象的三大特点

        封装,继承,多态。

        封装:提高程序的安全性。隐藏对象的属性和实现细节,只对外提供必要的方法。通过私有属性、私有方法实现封装。python没有关键字用来封装,在方法或属性名前使用__来表示私有属性。

        继承:继承可以让子类具有父类的特性,提高了代码的重用性。从设计上是一种增量进化,原有父类结构不变的情况下,可以增加新功能,或改进已有的算法。没有任何继承,默认继承object。还可以使用super().xx()对父类方法进行重写。

        多态:多态是指同一个方法调用于不同对象会产生不同的行为。多态实现,不同子类继承同一个父类。重写,子类重写同一方法,保证结果各不相同。

2)python的内存管理机制

        引用计数,垃圾回收,内存池机制。

        引用计数:python中每个对象都会包含一个头部信息,这个头部信息包括类型标识符和引用计数器。减少计数的方式:del a; 该对象的引用被赋值了其他对象; 从容器对象中移除; a.remove([1, 2]); 引用离开作用域,函数结束返回。

        垃圾回收:当python对象引用计数为0时,python解释器会对这个对象进行垃圾回收。回收有条件,特定条件,记录对象的分配和释放次数,当这两个次数的差值高于阈值的时候,python才会进行回收。

        内存池机制:为了避免频繁的申请和释放内存,python的内置数据类型、数值、字符串,产看源码可以看到数值缓存范围-5--257,对于这个范围内的数值,创建后会加入到缓存池中,再次使用直接从缓存池中返回,超出这个范围,每次都需要申请内存。字符串的intern机制,仅保存一份放在一个共用的字符串储蓄池中(下划线,数字,字母),字符超过20个不放入。

        内存溢出,内存泄露怎么处理?存储泄露最终表现形式都是内存不停增长,首先找到异常对象。工具一gc模块:垃圾收集器模块,标记清除算法回收垃圾,在循环逻辑中找出一个诊断点,在诊断点插入诊断语句,强制进行垃圾回收。工具二objgraph模块,诊断问题内存工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值