gpt4 book ai didi

python - Python 中是否有基于堆栈的变量?

转载 作者:太空狗 更新时间:2023-10-30 00:23:51 27 4
gpt4 key购买 nike

如果我这样做:

def foo():
a = SomeObject()

'a' 是否在离开 foo 后立即销毁?还是等待某些 GC 发生?

最佳答案

是也不是。该对象将在您离开 foo 后被销毁(只要没有其他对象引用它),但它是否立即是一个实现细节,并且会有所不同。

在 CPython(标准的 Python 实现)中,使用了引用计数,因此该项目将立即被销毁。这有一些异常(exception),例如当对象包含循环引用时,或者当引用保存到封闭框架时(例如,引发保留对框架变量的引用的异常。)

然而,在像 Jython 或 IronPython 这样的实现中,对象在垃圾收集器启动之前不会被最终确定。

因此,您不应该依赖对象的及时终结,而应该只假设它会在最后一次引用结束后的某个时刻被销毁。当您确实需要根据词法范围进行一些清理时,要么显式调用清理方法,要么查看新的 with statement在 python 2.6 中(在 2.5 中可用“from __future__ import with_statement”)。

关于python - Python 中是否有基于堆栈的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037533/

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