gpt4 book ai didi

python - python什么时候删除变量?

转载 作者:IT王子 更新时间:2023-10-28 23:32:34 27 4
gpt4 key购买 nike

我知道 python 有一个自动垃圾收集器,因此它应该在不再引用变量时自动删除变量。

我的印象是局部变量(函数内部)不会发生这种情况。

def funz(z):
x = f(z) # x is a np.array and contains a lot of data
x0 = x[0]
y = f(z + 1) # y is a np.array and contains a lot of data
y0 = y[0]

# is x and y still available here?
return y0, x0

del x是节省内存的正确方法吗?

def funz(z):
x = f(z) # x is a np.array and contains a lot of data
x0 = x[0]
del x
y = f(z + 1) # y is a np.array and contains a lot of data
y0 = y[0]
del y

return y0, x0

编辑:我已经编辑了我的示例,使其更类似于我的实际问题。在我的真正问题中,x 和 y 不是列表,而是包含不同大型 np.array 的类。

编辑:我能够运行代码:

x = f(z)
x0 = x[0]
print(x0)

y = f(z + 1)
y0 = [0]
print(y0)

最佳答案

实现使用引用计数来确定何时应该删除变量。

变量超出范围后(如您的示例),如果没有剩余的引用,则内存将被释放。

def a():
x = 5 # x is within scope while the function is being executed
print x

a()
# x is now out of scope, has no references and can now be deleted

除了列表中的字典键和元素之外,通常很少有理由在 Python 中手动删除变量。

不过,正如 this question 的回答中所说,使用 del 可用于显示意图。

关于python - python什么时候删除变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286171/

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