1. 程式人生 > >【python】python值傳遞問題和內存管理機制

【python】python值傳遞問題和內存管理機制

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值傳遞問題和內存管理機制