Aas*_*h P 4 python circular-reference
如果我尝试将列表附加到自身会发生什么?
# Let's say empty list is created.
some_list = []
# Now, append it with self
some_list.append(some_list)
# Output shows [[...]] on iPython console.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?会some_list成为递归列表还是什么?引用计数会发生什么some_list?垃圾收集者如何对待这个?什么时候some_list会被垃圾收集?
是的,你创建了一个循环引用; 列表对象引用自身.这意味着引用计数增加1个额外引用.
Python垃圾收集器将处理这种情况; 如果没有别的东西引用列表对象,垃圾收集器进程负责打破该循环:
>>> import gc
>>> some_list = []
>>> gc.get_referents(some_list)
[]
>>> some_list.append(some_list)
>>> some_list[0] is some_list
True
>>> gc.get_referents(some_list)
[[[...]]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |