gpt4 book ai didi

解释器环境中的python垃圾收集和_下划线

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:57 26 4
gpt4 key购买 nike

如果类是在解释器环境中定义的:

class C(object):
def __init__(self, val):
self.x = val

然后在没有名称的情况下实例化:

>>> C(1)
>>> C(2)
>>>

然后我们可以使用下划线_来引用C(2),所以这是我的问题:

  • 由于下划线“_”引用的是C(2),我们可以说引用吗C(2) 的计数器仍然是 1?所以 python gc 将不释放C(2) 占用内存?
  • 据我所知,执行这些C(2)后,没有任何名称会引用C(1),所以我可以说 C(2) 执行后,C(1) 的python gc 会释放内存吗?

这实际上是 4 个问题,一粗体对一问题。

gc:垃圾回收的缩写

编辑

让我通过直接在代码中注释来使我的第一个问题更清楚。

>>> C(1) # Press Enter Key and run
>>>
>>> At Here, what is the exact reference count for the previous anonymous object "C(1)"?
>>> And how to prove?
>>>
>>> C(2) # Press Enter Key and run
>>>
>>> At Here, what is the exact reference count for the previous anonymous object "C(1)"?
>>> And how to prove?

最佳答案

@allen,非常感谢您的回答。

根据你的猜测,我编写了以下代码:

In [3]: {'a': 1}
Out[3]: {'a': 1}

In [4]: C(1)
...: print(_)
...: print(type(_))
...: print(number_of_instances(C))
...:
{'a': 1}
<class 'dict'>
0

In [5]:

因此_下划线仅用于存储“单步模式”解释器中最后一个表达式的值,而不用于“连续模式”

这可能是初学者常犯的错误。

无论如何,非常感谢您的回答!

关于解释器环境中的python垃圾收集和_下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47150638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com