内存管理和拷贝

运算符重载

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

  • 2.运算符重载指的是在不同的类中实现同样的运算符对应的函数
        类的对象默认情况下只支持 ==,!=

浅拷贝和深拷贝

  • 1.直接赋值
        将变量中的地址直接赋给新的变量,赋值后两个变量的地址相同
  • 2.拷贝
        不管是浅拷贝和深拷贝都会对数据进行产生新的地址
  • 3.浅拷贝
        字符串,列表,元组的切片,对象.copy(),copy模块中的copy方法都是浅拷贝
        浅拷贝只拷贝当前对象,不会对子对象进行拷贝
  • 4.深拷贝
         copy模块中的deepcopy方法是深拷贝

枚举

  • 枚举的特点
        a.可以通过有意义的属性名直接显示数据
        b.每个数据的值不能修改
        c.可以做到不同的数据值唯一

内存管理

  • 1.内存的开辟
        a.内存区间分为栈区间和堆区间,栈区间的内存自动开辟自动释放,堆区间的内存需要程序员主动开辟和释放但是python已经将堆区间的开辟和释放自动化了
        b.当给变量赋值的时候,系统会先在堆区间中开辟空间将数据存起来,然后再将数据在堆中的地址存在变量中,变量存在栈区间
        c.数字和字符串数据在开辟空间的时候会先检查内存中之前内存中是否已经有这个数据,如果有就直接使用之前的数据,没有就开辟空间保存数据

  • 2.内存的释放
        a.栈区间:全局栈区间在程序结束后销毁,函数栈区间在函数调用结束后销毁(自动的)
        b.堆区间:看一个对象是否销毁,就看这个对象的引用计数是否为0,如果这个对象的引用计数为0这个对象就会销毁(垃圾回收机制)
        注意:Python中针对对象的循环引用已近引用做了处理,程序员不需要写额外的代码来解决循环

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理和拷贝 review 1.内置类属性: name、doc、class、dict、module、bases2...
    漫磋嗟阅读 176评论 0 0
  • 01 - 多继承 python中的类支持多继承(让一个类同时继承多个类);多继承的时候,子类只能继承第一个父类所有...
    Tianxiaoyu阅读 141评论 0 0
  • 一、review 1.写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥) 2、(...
    某人_4ee4阅读 208评论 0 0
  • """author = 陈俊龙""" ==============运算符的重载============== 1. ...
    陈俊龙1995阅读 279评论 0 0
  • “2018张江女神”新闻发布会举行 上海浦东“张江科学城”是全球世界上水平最先进、规模最大、集聚度最高的光子领域—...
    水盘六阅读 329评论 0 0