Python如何处理分配新对象并返回引用的函数?
def fun_function():
obj = {}
for x in range(100):
obj[x] = True
return obj
如果因为堆栈指针而回想起这样的东西在C中不起作用,但在Python中它似乎有效。对于长期运行的程序,这种返回值会有记忆后果吗?
是否更倾向于将对象的句柄传递给函数?
答案 0 :(得分:0)
在Python中,所有内容都在堆上分配(或者对于少数几件事情,你不能告诉他们他们不是)。当垃圾收集器不再可以访问时,垃圾收集器将负责释放它们。没有相当于C的基于堆栈的变量生命周期;你永远不必担心一个物体在你使用它时会被解除分配。
答案 1 :(得分:-3)
这里你基本上有一个工厂方法。如果本地指针丢失,则调用方法将指向新创建的列表(obj局部变量)
一旦方法外部的指针被取消范围化,垃圾收集器就不会收集内存,但它不是内存泄漏,除非该赋值在全局范围内。