在c/C++中,當你在一個函數中創建一個局部變量時,你有堆棧中的變量。python創建堆的一切?
http://effbot.org/zone/call-by-object.htm
CLU對象獨立存在程序的激活。對象的空間 是從一個動態存儲區域分配的../..在理論上,所有對象都是永久存在的。實際上,當對象不再可用於任何CLU程序的 時,可以回收對象使用的空間。
這是否意味着python中的對象是從堆中創建的(就像在c/C++中的malloc一樣)?當沒有與它們相關的名字時,對象被釋放(像智能指針)?
例子:
def foo(a):
result = []
result.append(a)
return result
foo("hello")
myList = foo("bye")
所以第一個結果([])是在堆上創建和釋放得到,因爲沒有與它相關聯的名字嗎?
如果您認爲需要,您還可以使用'del'手動刪除東西。 – 2012-07-27 13:48:39
如果你問這個問題的動機是你希望你的函數總是使用同一個列表,注意你可以將它定義爲'def foo(a,result = [])',並且每次你使用同樣的列表調用該函數,因爲它在函數定義時創建,而不是在運行時創建。 – geoffspear 2012-07-27 14:26:28