python 共享引用

在上一节中,我给大家介绍了单个变量被赋值引用多个对象的情况。然而,单个(一个)对象被多个变量引用又是怎么一回事儿呢?
a = 3
b = a

先上图(图1)吧,大家一看就一目了然了:

图1

变量名和对象,在运行赋值语句b = a之后,变量a,b都指向了对象3的内存空间.

假设这时执行 a = 'python', a将指向刚创建的字符串对象。

我们再来试试这种情况:

>>>list_1 = [1,2,3,4]
>>>list_2 = list_1
>>>list_2
>>>list_1[0] = 'python'
>>>list_2
result:

[1,2,3,4]

['python',2,3,4]

从我的理解上来解释的话: list是一个类型对象,而对象里的每一个元素可以看成是变量,去引用了不同内存空间的对象list_1 = [1,2,3,4]是让list_1指向list的内存空间,list_2 = list_1时,他们将指向同一个内存空间。当List_1[0]改变指向时,list_2依然指向list对象的,所以看是改变list_1[0]的值,实际上是python通过list_1直接到内存空间去做了修改,list_2的指向没有任何变量。

或许这种结果并不是我们想要的。如果你不想要这样的现象发生,需要python对象拷贝,而不是创建引用。

如:


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值