【python】python值傳遞問題和內存管理機制
阿新 • • 發佈:2017-11-17
python
1)值傳遞問題
python中到底是"值傳遞"還是"引用傳遞",主要取決於對象是否是可變的. 1)函數傳參: ·基本數據類型:int、float、str;元祖屬於不可變對象;傳遞的是"原值"的拷貝 ·列表、字典、類、類實例屬於可變對象;傳遞的是"值引用" 2)變量復制 ·python中的變量復制(a=b)也是同樣的道理,不可變對象被真正復制;而可變對象只是傳遞了一個 "引用" 例子: a = 1 b = a,此時改變a的值不會改變b的值
2)內存機制
1)變量值在內存中存放 ·基本數據類型:int、str、float等,相同的值賦給不同的變量,內存地址是一致的; ·列表、元祖、字典,相同的值賦給不同的變量,內存地址是不一致的 例子: a = 1 b = 1 id(a)=id(b) 這個是成立的 a = [1,2] b = [1,2] id(a) = id(b) 這個是不成立的 2)內存管理機制 ·引用計數:追蹤內存中的對象 當對象被創建時就創建了一個引用計數,當對象不再需要時,這個對象的引用計數為0時 ,它被垃圾回收。 ·內存池:目前暫不討論
本文出自 “孔小發愛吃魚” 博客,謝絕轉載!
【python】python值傳遞問題和內存管理機制