鱼C论坛

 找回密码
 立即注册
查看: 236|回复: 1

[已解决]这个new为啥不随着old改变而改变啊

[复制链接]
发表于 2024-6-18 14:32:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
old = [1,2,3,4,5]
new = old
old = [6]
old
[6]
new
[1, 2, 3, 4, 5]

课上的例子会随着改变而改变
x = [1,2,3]
y = x
x[1] = 1
x
[1, 1, 3]
y
[1, 1, 3]
最佳答案
2024-6-18 14:34:28
嘿,朋友!你遇到的问题可以归结为“赋值”和“引用”的区别。别急,我们用一个趣味的小例子来说明一下。

想象一下你和你的朋友(叫他小王吧)都在拿着一张纸条。初始情况下,你们的纸条上都没写东西。
old = None
new = old

这个时候,你们纸条上的内容都是空的(`None`)。

然后你决定在你的纸条上写点东西,于是:
old = "Hello"
现在,你的纸条上写了`"Hello"`,但小王的(`new`)还是什么都没有,因为这个时候你们拿的其实是两张不同的纸条,各自修改自己纸条上的内容不会影响对方。

但假如说你们换种方式,只有一张纸条,当你修改上面内容的时候,大家看到的内容都会变。用代码来演示一下,这次我们先用一个可变对象,比如列表:
old = []
new = old
old.append("Hello")
print(f"old: {old}")
print(f"new: {new}")

结果会是:
old: ['Hello']
new: ['Hello']

你看,`old`和`new`都改变了,因为它们指向的是同一个列表对象(其实就是共用一张纸条)。

而再回到你的代码,如果你用整型或字符串这种不可变对象的话,情况就不一样了。试着理解以下代码的区别:
x = "FishC"
y = x
x = "Hello"
print(x)  # 输出 "Hello"
print(y)  # 输出 "FishC"

`x`和`y`最开始都指向同一个字符串`"FishC"`。后来`x`指向了新的字符串`"Hello"`,而`y`仍然指向原来的`"FishC"`。

所以,你的代码中`old`和`new`独立存在,改变一个不会影响另一个。

希望这个解释能帮你理清楚赋值和引用的区别!如果还有问题,尽管问哈!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-18 14:34:28 | 显示全部楼层    本楼为最佳答案   
嘿,朋友!你遇到的问题可以归结为“赋值”和“引用”的区别。别急,我们用一个趣味的小例子来说明一下。

想象一下你和你的朋友(叫他小王吧)都在拿着一张纸条。初始情况下,你们的纸条上都没写东西。
old = None
new = old

这个时候,你们纸条上的内容都是空的(`None`)。

然后你决定在你的纸条上写点东西,于是:
old = "Hello"
现在,你的纸条上写了`"Hello"`,但小王的(`new`)还是什么都没有,因为这个时候你们拿的其实是两张不同的纸条,各自修改自己纸条上的内容不会影响对方。

但假如说你们换种方式,只有一张纸条,当你修改上面内容的时候,大家看到的内容都会变。用代码来演示一下,这次我们先用一个可变对象,比如列表:
old = []
new = old
old.append("Hello")
print(f"old: {old}")
print(f"new: {new}")

结果会是:
old: ['Hello']
new: ['Hello']

你看,`old`和`new`都改变了,因为它们指向的是同一个列表对象(其实就是共用一张纸条)。

而再回到你的代码,如果你用整型或字符串这种不可变对象的话,情况就不一样了。试着理解以下代码的区别:
x = "FishC"
y = x
x = "Hello"
print(x)  # 输出 "Hello"
print(y)  # 输出 "FishC"

`x`和`y`最开始都指向同一个字符串`"FishC"`。后来`x`指向了新的字符串`"Hello"`,而`y`仍然指向原来的`"FishC"`。

所以,你的代码中`old`和`new`独立存在,改变一个不会影响另一个。

希望这个解释能帮你理清楚赋值和引用的区别!如果还有问题,尽管问哈!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表