摘要:每個變量都有標識類型和值對象一旦創建它的標識絕不會變標識可以簡單的理解為對象在內存中的地址別名跟是別名指向如果增加新的內容也會增加相等性為運算符比較連個對象的值對象中保存的數據標識為因為他們都指向這個列表比較對象的標識元組相對不可變性元組保
a = [1,2,3,4] b = a
每個變量都有標識,類型和值.對象一旦創建,它的標識絕不會變;標識可以簡單的理解為對象在內存中的地址.
別名 a 跟 b 是別名指向 [1,2,3,4],如果a增加新的內容,b也會增加.
相等性 b == a 為 true.==運算符比較連個對象的值(對象中保存的數據)
標識 b is a 為true,因為他們都指向 [1,2,3,4] 這個列表,is比較對象的標識
元組相對不可變性
元組保存對象的引用,跟python的集合set一樣,如果引用的元素是可變的,即便元組本身不可變,元素依然可變.即:元組的不可變形其實指tuple數據結構的物理內容(即保存的引用)不可變,與引用對象無關
默認做淺層復制
淺層復制 : 1.復制了最外層容器,副本中的元素是源容器中元素的引用 2.他們的值相等,單兩者指向不同的對象. 3.副本共享內部對象的引用
淺層復制
若所有元素都是不可變的,不存在任何問題,并節省了內存.
如果存在可變的元素,如list會導致意想不到的問題.
l1 = [3,[66,55,44],(7,8,9)] l2 = list(l1) l1.append(100) # 由于只復制了外層容器,這里僅有l1內容發生變化 l1[1].remove(55) # l1[1] 是一個list可變的元素,所有以l2[1]的元素也發生變化 l2[1] +=[33,22] l2[2] += (10,11) # l2[2]是tuple,不可變的元素所有只有l2[2]發生變化.
深層復制,副本不共享內部對象的引用
函數的參數作為引用時
python中唯一支持的參數傳遞模式是共享傳參 call by sharing
共享傳參:函數的各個形式參數獲得實參中各個運用的副本,即是函數內部的形參是實參的別名
影響:函數可能會修改作為參數傳入的可變對象,但無法修改那些對象的標識
不要使用可變類型作為參數的默認值
可變參數作為默認值會導致:如果么有指定內容,會共用一個對象.所以通常使用Nono作為接收可變值得參數的默認值.
防御可變參數
如果定義函數的接受可變參數,應該謹慎的考慮調用方是否期望修改傳入的參數.
del和垃圾回收
對象絕不會自行銷毀;然而,無法得到對象時,可能會被當做垃圾處理.一個對象的引用數量為0的話會被銷毀
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42372.html
摘要:一對象引用基礎知識變量是標注而不是容器。也就是說元組中不可變的是元素的標識,但元組的值會隨著引用的可變對象變化而變化。在中每個對象的引用都會有統計。弱引用不會妨礙對象被當做垃圾回收。 導語:本文章記錄了本人在學習Python基礎之面向對象篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、明確變量保存的是引用這一本質;2、熟悉對象引用的基礎知識;...
摘要:函數的參數作為引用時唯一支持的參數傳遞模式是共享傳參,它指函數的形參獲得實參中各個引用的副本,即形參是實參的別名。而在上面這個例子中,類的屬性實際上是形參所指向的對象所指對象,的別名。 《流暢的Python》筆記本篇是面向對象慣用方法的第一篇,一共六篇。本篇主要是一些概念性的討論,內容有:Python中的變量,對象標識,值,別名,元組的某些特性,深淺復制,引用,函數參數,垃圾回收,de...
摘要:運算符比較兩個對象的標識函數返回對象標識的整數表示。實際上,每個對象都會統計有多少引用指向自己。對象被銷毀了,調用了回調,的值變成了。當對象的引用數量歸零后,垃圾回收程序會把對象銷毀。引用的目標對象稱為所指對象。 對象不是個盒子 showImg(https://segmentfault.com/img/bV95mW?w=1784&h=988); class Gizmo: def...
摘要:對象引用和可變性變量不是盒子,而是便利貼變量的賦值方式比如是將一個變量分配給一個對象比如整數。運算符比較兩個對象的標識函數返回對象標識的整數表示。每個對象都會統計有多少引用指向自己。對象被銷毀執行回調函數輸出 對象引用和可變性 變量不是盒子,而是‘便利貼’ >>> a = [1,2,3] >>> b = a >>> a.append(5) >>> a [1, 2, 3, 5] >>> ...
閱讀 2553·2021-11-23 09:51
閱讀 3355·2021-11-22 15:22
閱讀 1868·2021-11-18 13:22
閱讀 2236·2021-09-24 09:48
閱讀 1308·2019-08-29 13:58
閱讀 1297·2019-08-26 13:39
閱讀 2445·2019-08-26 10:48
閱讀 3031·2019-08-26 10:21