如果我在python函數中創建一個列表並將其返回給調用者,那麼垃圾收集如何在該列表中工作?我必須做任何事情來防止發生內存泄漏嗎?在函數中創建和返回的動態列表是否會在Python中創建內存泄漏?
例如:
#!/usr/bin/python
import random
class Example:
def f1(self):
list = []
len = random.randint(0, 30)
for i in range (0, len):
list.append(random.randint(0, 65536))
return list
random.seed(None)
e = Example()
while (1):
l = e.f1()
這會不會導致內存泄漏? f1()中的'list'是否在任何時候都有適當的引用計數? f1()的調用者是否必須做任何事情來防止發生內存泄漏?調用者應該在列表上做一個del()還是什麼?
'list'是一個保留的Python關鍵字,建議您不要使用它作爲列表的名稱。 – soulseekah 2010-11-10 11:36:29
是啊,是的...使用alist,rlist代替 – Ant 2010-11-10 11:36:56
你也應該避免調用一個變量'len',因爲這會掩蓋對'len'內建函數的訪問。 – mikej 2010-11-10 11:50:47