新手小程序媛 发表于 2018-6-28 22:30:29

python第012讲的课后作业求助

>>> old =
>>> new = old
>>> old =
>>> print(new)
为什么会显示而不是呢?

而且查看new和old的id也不一样,第011讲中不是说list3=list1,查看list3和list1的id确实是一样的,这是怎么回事呢,求大神指点

火垂るの墓 发表于 2018-6-28 22:41:00

old =
new = old
old.append(6)
print(new)
你这样看,new 和 old 就指向同一list了
old = 相当于在内存里开辟了一块新的内存,让old指向它,所以new 和 old指的就是不是同一个list了

凌九霄 发表于 2018-6-29 00:00:55

new = old 后如果不进行赋值操作的话,注意赋值二字,你可以对这两个append,remove都可以,这两个依然指向同一个内存地址,但是一旦有赋值操作,不管是对new赋值,还是old赋值,那么new就非原来的new,old非原来的old了,虽然名字相同,但也仅此而已。你上面是给old赋了新值,那么原来的old已不可引用,python的垃圾回收机制将其回收了。

新手小程序媛 发表于 2018-6-29 06:51:35

火垂るの墓 发表于 2018-6-28 22:41
old =
new = old
old.append(6)


谢谢热心解答{:5_110:}

wkwkwk 发表于 2018-7-4 10:26:05

谢谢解答。

新手小程序媛 发表于 2018-7-4 16:57:06

凌九霄 发表于 2018-6-29 00:00
new = old 后如果不进行赋值操作的话,注意赋值二字,你可以对这两个append,remove都可以,这两个依然指向 ...

谢谢解答

HAOHAN 发表于 2018-8-20 20:31:13

火垂るの墓 发表于 2018-6-28 22:41
old =
new = old
old.append(6)


原来是这样,谢谢答主~
页: [1]
查看完整版本: python第012讲的课后作业求助