python list中引用其它对象
2013-07-25 10:51
176 查看
昨天运行之前写的pynessus-client,发现程序解析的列表retvalue都是一样的成员。程序代码如下:
今天上午调试半天,刚开始以为是从element解析结果不对;但通过打印elem的内容,发现每次都不相同;后来又觉得是不是member字典不能修改类型呢,但通过打印member发现每次也都不一样。另外还有一个现象就是,所有的list内容都是最后一个member的内容。
后来问了一下齐总,齐总把 member=dict() 移到了for循环里面再次运行就可以了。原来python中类型是引用而不是值拷贝,放到list这弄个的类型还可以通过原来的变量修改。这和C++中容器的值拷贝完全不一样。这次又长姿势了!后面有时间挑一本python内部实现的书看看。
retvalue = list() member = dict() element = contents.find("./scans/scanList") for elem in element.getchildren(): member['uuid'] = elem.find("./uuid").text member['readableName'] = elem.find("./readableName").text member['owner'] = elem.find("./owner").text member['start_time'] = elem.find("./start_time").text member['completion_current'] = elem.find("./completion_current").text member['completion_total'] = elem.find("./completion_total").text member['status'] = elem.find("./status").text retvalue.append(member) return retvalue
今天上午调试半天,刚开始以为是从element解析结果不对;但通过打印elem的内容,发现每次都不相同;后来又觉得是不是member字典不能修改类型呢,但通过打印member发现每次也都不一样。另外还有一个现象就是,所有的list内容都是最后一个member的内容。
后来问了一下齐总,齐总把 member=dict() 移到了for循环里面再次运行就可以了。原来python中类型是引用而不是值拷贝,放到list这弄个的类型还可以通过原来的变量修改。这和C++中容器的值拷贝完全不一样。这次又长姿势了!后面有时间挑一本python内部实现的书看看。
相关文章推荐
- List添加对象添加的是对象的引用
- python模块对象定义,引用
- Python:创建对象中的引用和拷贝
- PYTHON将list或/dict对象写入txt/json文件
- Python List 对象的 append 和 extend 的区别
- 【Python】引用和对象的理解
- 零基础学python-6.1 变量、对象与引用
- python对象、引用、全局变量和局部变量的关系
- Python中的可变,不可变对象;值类型,引用类型;浅拷贝,深拷贝理解
- python对象引用(变量)
- python list 有序插入新对象
- 跟老齐学Python之深入变量和引用对象
- 实现思想list hashmap性能差别及对象引用之二
- ArrayList与LinkedList方法分析一:查找某个对象引用在集合中的索引(index)
- python笔记(五) - 获取对象的引用
- python赋值和拷贝----一切皆对象,参数皆引用
- list集合对于基本数据类型与引用数据类型(对象)去重操作
- python对象引用引起的问题
- 『Python』内存分析_List对象内存占用分析
- Python对象引用和del删除引用