Justin6 发表于 2020-4-16 15:32:01

11课的一道题

>>> old =
>>> new = old
>>> old =
>>> print(new)
最后的答案尽然是
不是old = new = 吗
我哪里想错了。

qiuyouzhi 发表于 2020-4-16 15:36:15

这个东西就和贴标签一样,
你把old的标签撕下来,贴到6上
这时他俩就没有关系了(列表内置方法不会改变标签)

倒戈卸甲 发表于 2020-4-16 16:02:13

本帖最后由 倒戈卸甲 于 2020-4-16 16:12 编辑

你的程序逻辑:
第一行代码,创建列表,然后给这个列表贴了标签名old。
第二行代码,将new标签同样贴到了列表上。
第三行代码,创建列表 ,并给其贴了标签old。
注意,这里完全没有new的戏份,所以到第四行打印new自然得到第二行的结果。
作为对比,你可以考虑另外一段代码。
即你不创建新列表,而是将第三行代码改为old.reverse()。那么因为old和new都贴在列表上。你通过old对进行了倒置,访问new也会得到改变后的结果。

Hoiste 发表于 2020-4-16 16:11:08

形象一点就是
new = old 让你以为是new = old = 。实际上是new = ,old = ,赋值使得两个变量指向的地址相同。
然后给old赋值新的内容,old就指向新的地址了。
页: [1]
查看完整版本: 11课的一道题