gpt4 book ai didi

python - 函数完成时对象是否从内存中删除? Python

转载 作者:太空狗 更新时间:2023-10-30 00:02:12 24 4
gpt4 key购买 nike

说有

class thing(object):
def __init__(self):
self.text = "foo"


def bar():
obj = thing()
#do something with the object

bar()

obj 是在 bar() 完成后从内存中删除,还是仍在内存中,只是无法访问,因为它是 bar 的局部变量? (当然,这假设 obj 没有放入全局或外部容器中,例如字典或列表)。

最佳答案

对象 obj 引用将在函数退出时被删除。

那是因为 CPython(默认的 Python 实现)使用引用计数来跟踪对象的生命周期。 obj 是局部变量,仅在函数运行期间存在。 thing() 是一个只有一个引用的实例,obj,当 obj 被清理后,引用计数降为 0 并且 thing() 立即被删除。

如果您使用 PyPy、IronPython、Jython 或其他一些实现,对象销毁可能会延迟,因为实现可以自由使用不同的垃圾收集方案。这仅对实现 __del__ 方法很重要,因为它们的调用可能会延迟。

我推荐你阅读优秀的 Facts and myths about Python names and values如果您想了解更多关于 Python 名称的工作原理。

关于python - 函数完成时对象是否从内存中删除? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482642/

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