變數賦值時的參考傳遞
在Python語言中,物件是透過引用傳遞的。在賦值時,不管這個物件是新建立的,還是一個已經存在的,都是將該物件的參考(並不是值)賦值給變數。
要保持追蹤記憶體中的對象,Python使用了引用計數這項簡單技術。也就是說Python內部記錄所有使用中的物件各有多少引用。一個內部追蹤變量,稱為一個引用計數器。每個物件各有多少個引用,簡稱引用計數。當物件被創建時,就創建了一個引用計數,當這個物件不再需要時,也就是說,這個物件的引用計數變成0時,它被垃圾回收。
當物件被建立並(將其引用)賦值給變數時,該物件的參考計數就被設定為1。當同一個物件(的引用)又被賦值給其他變數時,或作為參數傳遞給函數、方法或類別實例時,或被賦值為一個視窗物件的成員時,該物件的一個新的引用,或稱作別名,就被創建(則該物件的引用計數自動加1)。
當物件的參考被銷毀時,引用計數會減少。最明顯的例子就是當引用離開其作用範圍時,這種情況最常出現在函數運行結束時,所有局部變數都被自動銷毀,而物件的引用計數也隨之減少。當變數被賦值給另外一個物件時,原始物件的參考計數也會自動減1。其他造成物件的引用計數減少的方式包括使用del語句刪除一個變量,或者當一個物件被移出一個視窗物件時(或該容器物件本身的引用計數變成了0時)。
在上面的例子中,a = 1使變數a指向了整數物件1,b = a使變數b也指向了整數物件1,透過語句id(a), id(b)可以看到變數a和變數b所指向的記憶體位址相同。語句a = 2將新的物件2賦值給了變數a,此時變數a指向了物件2,變數b仍然指向原來的物件1。透過語句id(a), id(b)可以看到變數a與變數b所指向的記憶體位址不同。
以上是python怎麼用引用來改變一個變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!