a=[]
b=[]
a.append(b)
b.append(a)
如果这算循环引用,那这两个列表岂不是嵌套的很深?
@爱情的枪 嗯,存储的是一个引用
@meamin9 应该是没有存储实际的数据,因此内存没占多少
@olivetree 显示时虽然是用省略的,但是不深。用c.append(c)来说吧,列表c中放了一个c自己的引用。print时,是一个循环显示c,结果显示出了省略号。你可以查看id(c)和id(c[0])是一样的。比方说如果一个链表有一个print_next方法,这个方法输出当前节点的下一个节点的内容,并把下个节点作为当前节点,那么对循环链表调用这个方法就会无限输出节点的内容,但这个链表占的内存还是那么多。
@meamin9 @爱情的枪 嵌套不深?输出的结果用省略号表示的,看来是很深的,解释器应该会把这种情况优化吧,只是不知道实现的时候用了什么优化的方式,使得内存没有占满
算循环引用吧。嵌套不深。a列表中放的是b的引用,b中放的是a的引用。 如<br /> c=[]<br /> c.append(c)<br /> c中只放了c自身的引用
@olivetree 是的额。。。
试了一下,确实很深。。。