python中的引用

有如下一段代码:

spam=42
cheese=spam
spam=20
print(spam)
print (cheese)
输出结果为:

42

20

将42赋给spam变量,然后拷贝spam中的值,将它赋给变量cheese,当稍后改变spam的值不会影响到cheese的值,这是因为spam和cheese是两个不同的变量,保存了不同的值。

但是列表不是这样的,当你将列表赋给一个变量的时候,实际上是将列表的引用赋给了该变量,引用是一个值,指向某些数据。列表引用是指向一个列表的值。这有些代码,会更加容易理解这个概念。

spam=[0,1,2,4,5,6]
cheese=spam
cheese[1]='hello'
print spam
print  cheese
输出结果为:

[0, 'hello', 2, 4, 5, 6]
[0, 'hello', 2, 4, 5, 6]

代码只改变了cheese列表,但似乎cheese和spam列表同时发生了改变,当创建表的时候,你将对它的引用赋给了变量,但下一行只是将spam中的列表引用拷贝到了cheese,而不是列表值本身。这意味着存储在spam和cheese中的值指向了同一个列表。底下只有一个列表,因为列表本身实际从未复制,所以当你修改cheese变量的第一个元素时,实际就是修改了表,所以spam的值发生了变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值