您的位置:首页 > 编程语言 > Python开发

python list中引用其它对象

2013-07-25 10:51 176 查看
昨天运行之前写的pynessus-client,发现程序解析的列表retvalue都是一样的成员。程序代码如下:

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内部实现的书看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: