python list中引用其它对象

昨天运行之前写的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内部实现的书看看。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值