Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286043
  • 博文数量: 240
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-04 18:14
文章分类

全部博文(240)

文章存档

2017年(8)

2014年(4)

2013年(15)

2012年(4)

2011年(14)

2010年(55)

2009年(140)

我的朋友

分类: Python/Ruby

2017-12-04 10:08:07

同一个对象的值被不断修改,但内存地址没有改变的结果:

  1. $cat test01.py
  2. #!/usr/bin/python
  3. #-*- encoding: utf-8 -*-
  4. mylist=[]
  5. a={}
  6. for i in range(1,5):
  7.     # 注意这个 a={},如果只在上面初始化一次,就等于是同一个对象的内容不断擦除重写,但内存地址不会改变
  8.     #a={}
  9.     a["name"]='myname_'+str(i)
  10.     print a
  11.     print id(a)
  12.     mylist.append(a)
  13. print '------------------'
  14. print mylist


  1. $python test01.py
  2. {'name': 'myname_1'}
  3. 35410624
  4. {'name': 'myname_2'}
  5. 35410624
  6. {'name': 'myname_3'}
  7. 35410624
  8. {'name': 'myname_4'}
  9. 35410624
  10. ------------------
  11. [{'name': 'myname_4'}, {'name': 'myname_4'}, {'name': 'myname_4'}, {'name': 'myname_4'}]




每次在修改对象值的时候,重新初始化新的内存地址:

  1. $cat test02.py
  2. #!/usr/bin/python
  3. #-*- encoding: utf-8 -*-
  4. mylist=[]
  5. #a={}
  6. for i in range(1,5):
  7.     # 注意这个 a={},如果只在上面初始化一次,就等于是同一个对象的内容不断擦除重写,但内存地址不会改变
  8.     a={}
  9.     a["name"]='myname_'+str(i)
  10.     print a
  11.     print id(a)
  12.     mylist.append(a)
  13. print '------------------'
  14. print mylist


  15. $python test02.py
  16. {'name': 'myname_1'}
  17. 22143680
  18. {'name': 'myname_2'}
  19. 22212272
  20. {'name': 'myname_3'}
  21. 22143104
  22. {'name': 'myname_4'}
  23. 22211984
  24. ------------------
  25. [{'name': 'myname_1'}, {'name': 'myname_2'}, {'name': 'myname_3'}, {'name': 'myname_4'}]




阅读(842) | 评论(0) | 转发(0) |
0

上一篇:python list 数据比较

下一篇:json

给主人留下些什么吧!~~