首页 > 编程语言 > 详细

python 对象和引用

时间:2015-11-30 18:06:29      阅读:291      评论:0      收藏:0      [点我收藏+]

在python当中一切皆对象,我们可以先创建一个对象,并给对象一定的值,这叫做实例化,然后再把此对象可以被其他对象所引用,

列表操作如下:

list1 = [1,2,"a","b",[5,6,7]] 
list2 = list1

id(list1)  #比较两个对象的值在内存的id是否一致
140698570735696

id(list2)
140698570735696

判断两个列表是否相等,注:此处的判断是判断两个列表的值是否相等。

list1 == list2
True

将source列表进行修改,然后检查list2的值是否发生修改:

先通过list1的最后一个下标获取其值:

list1[4]  #或取下标的值
[5, 6, 7]

list1[4] = [55,66]  #对下标重新赋值

list1
[1, 2, ‘a‘, ‘b‘, [55, 66]]  #检查list1和list2的值是否一致

list2
[1, 2, ‘a‘, ‘b‘, [55, 66]]

list1 == list2  #再次验证是否一致
True


字典下标操作:

通过下标获取value并进行修改:

dic1 = {1:2,"a":"b"}
dic1.setdefault(901,[55]) #setdefault,当有此字典的时候不做任何设置,无此字典则进行添加
[55]  #是setdefault的返回值

dic1.fromkeys(range(5),[]) #fromkeys为指定key,并未key指定value从而生成新的字典。
{0: [], 1: [], 2: [], 3: [], 4: []}

c = dic1.fromkeys(range(5),[]) #c实例化dic1方法生成的结果
c[1].append({"B":{}}) #c字典进行修改

c[1][0]["B"]["C"] = "END" #获取到c的下标进行修改

print c #显示c的最最终内容
{0: [{‘B‘: {‘C‘: ‘END‘}}], 1: [{‘B‘: {‘C‘: ‘END‘}}], 2: [{‘B‘: {‘C‘: ‘END‘}}], 3: [{‘B‘: {‘C‘: ‘END‘}}], 4: [{‘B‘: {‘C‘: ‘END‘}}]}

print dic1
{‘a‘: ‘b‘, 1: 2, 901: [55], 902: ‘x‘}

字典引用:

dic1 = {"k1":"v1","k2":"v2"}  #创建一个字典,实例化的步骤

id(dic1) #查看字典在内存的id
140502614443464

dic2 = dic1  #对dic1进行引用

id(dic2)
140502614443464


dic1["k2"] = "v22"  #通过字典的key修改其相对应的value,这样是在字典原基础上修改,这样不会影响内存id,如果直接改字典是新建一个新的字典并复制给当前字典,内存id会变化
dic1
{‘k1‘: ‘v1‘, ‘k2‘: ‘v22‘}

dic2    #查看dic1和dic2,发现dic1修改dic2同样进行了修改
{‘k1‘: ‘v1‘, ‘k2‘: ‘v22‘}

id(dic1)  #
140502614443464

id(dic2)  #再次检查dic1和dic2的内存id并没有变化,因此通过字典的key修改不会影响字典引用和内存id的值
140502614443464


本文出自 “Linux” 博客,请务必保留此出处http://zhangshijie.blog.51cto.com/806066/1718246

python 对象和引用

原文:http://zhangshijie.blog.51cto.com/806066/1718246

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!