python对象模型,,python的对象p


python的对象
python对象由两部分构成:类型标识符(标识对象类型)、引用计数器(垃圾回收机制需要)
每一个对象都有两个标准的头部信息:一个类型标识符去标识这个对象的类型;一个引用的计数器,用来决定是不是可以回收这个对象;
对象和变量的关系
1、变量(实质是指针)和对象分别保存在内存的不同部分
2、变量总是指向对象,并且绝不会指向其他变量上,但是更大的对象可能连接到其他的对象;
3、在Python内部,作为一种优化,Python预先缓存了一些不变的对象并对其进行复用;
  例如:None对象,None是python定义来表示空值,内存中有一块地址保存它
对象的类别
可变对象与不可变对象
可变对象一旦创建之后还可调用函数改变但是地址不会发生改变,即该变量指向的还是原来的对象。
有 :list,dictionary,set
不可变对象则相反,创建之后不能更改,如果调用更改函数会返回一个新的对象。
有:int,string,float,tuple
额外知识:对象的深拷贝与浅拷贝
浅拷贝:只是将引用指向同一块内存地址,
深拷贝:新创建一块内存用于储存被拷贝对象的值。
    注意:深拷贝像文件夹一样层层递归性,即每当发现里面是个引用,便依次深拷贝
代码:
浅拷贝:a=b
深拷贝:a=copy.deepcopy(b)
第一层的拷贝:a=copy.copy(b),注意的是copy.copy函数会根据当前拷贝对象类型进行拷贝操作的选择。
                若是不可变类型,则转为浅拷贝。若是可变类型,则进行深拷贝(但是并不具有递归效果)

python对象模型

评论关闭