码迷,mamicode.com
首页 > 编程语言 > 详细

python对象模型

时间:2018-05-27 14:52:38      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:内存地址   nbsp   python   空值   int   额外   深拷贝   模型   函数   

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对象模型

标签:内存地址   nbsp   python   空值   int   额外   深拷贝   模型   函数   

原文地址:https://www.cnblogs.com/ziyide/p/9095804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!