成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python 對象引用,可變性和垃圾回收

Flands / 1053人閱讀

摘要:每個變量都有標(biāo)識類型和值對象一旦創(chuàng)建它的標(biāo)識絕不會變標(biāo)識可以簡單的理解為對象在內(nèi)存中的地址別名跟是別名指向如果增加新的內(nèi)容也會增加相等性為運算符比較連個對象的值對象中保存的數(shù)據(jù)標(biāo)識為因為他們都指向這個列表比較對象的標(biāo)識元組相對不可變性元組保

a = [1,2,3,4]
b = a

每個變量都有標(biāo)識,類型和值.對象一旦創(chuàng)建,它的標(biāo)識絕不會變;標(biāo)識可以簡單的理解為對象在內(nèi)存中的地址.

別名 ab 是別名指向 [1,2,3,4],如果a增加新的內(nèi)容,b也會增加.

相等性 b == atrue.==運算符比較連個對象的值(對象中保存的數(shù)據(jù))

標(biāo)識 b is atrue,因為他們都指向 [1,2,3,4] 這個列表,is比較對象的標(biāo)識


元組相對不可變性

元組保存對象的引用,跟python的集合set一樣,如果引用的元素是可變的,即便元組本身不可變,元素依然可變.即:元組的不可變形其實指tuple數(shù)據(jù)結(jié)構(gòu)的物理內(nèi)容(即保存的引用)不可變,與引用對象無關(guān)


默認(rèn)做淺層復(fù)制

淺層復(fù)制 : 1.復(fù)制了最外層容器,副本中的元素是源容器中元素的引用 2.他們的值相等,單兩者指向不同的對象. 3.副本共享內(nèi)部對象的引用

淺層復(fù)制

若所有元素都是不可變的,不存在任何問題,并節(jié)省了內(nèi)存.

如果存在可變的元素,如list會導(dǎo)致意想不到的問題.

l1 = [3,[66,55,44],(7,8,9)]
l2 = list(l1)
l1.append(100)  # 由于只復(fù)制了外層容器,這里僅有l(wèi)1內(nèi)容發(fā)生變化
l1[1].remove(55) # l1[1] 是一個list可變的元素,所有以l2[1]的元素也發(fā)生變化
l2[1] +=[33,22]
l2[2] += (10,11) # l2[2]是tuple,不可變的元素所有只有l(wèi)2[2]發(fā)生變化.

深層復(fù)制,副本不共享內(nèi)部對象的引用


函數(shù)的參數(shù)作為引用時

python中唯一支持的參數(shù)傳遞模式是共享傳參 call by sharing

共享傳參:函數(shù)的各個形式參數(shù)獲得實參中各個運用的副本,即是函數(shù)內(nèi)部的形參是實參的別名

影響:函數(shù)可能會修改作為參數(shù)傳入的可變對象,但無法修改那些對象的標(biāo)識


不要使用可變類型作為參數(shù)的默認(rèn)值
可變參數(shù)作為默認(rèn)值會導(dǎo)致:如果么有指定內(nèi)容,會共用一個對象.所以通常使用Nono作為接收可變值得參數(shù)的默認(rèn)值.


防御可變參數(shù)

如果定義函數(shù)的接受可變參數(shù),應(yīng)該謹(jǐn)慎的考慮調(diào)用方是否期望修改傳入的參數(shù).


del和垃圾回收

對象絕不會自行銷毀;然而,無法得到對象時,可能會被當(dāng)做垃圾處理.一個對象的引用數(shù)量為0的話會被銷毀

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42372.html

相關(guān)文章

  • Python中的對象引用、變性垃圾回收

    摘要:一對象引用基礎(chǔ)知識變量是標(biāo)注而不是容器。也就是說元組中不可變的是元素的標(biāo)識,但元組的值會隨著引用的可變對象變化而變化。在中每個對象的引用都會有統(tǒng)計。弱引用不會妨礙對象被當(dāng)做垃圾回收。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之面向?qū)ο笃闹攸c知識及個人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點: 1、明確變量保存的是引用這一本質(zhì);2、熟悉對象引用的基礎(chǔ)知識;...

    ytwman 評論0 收藏0
  • Python學(xué)習(xí)之路27-對象引用、變性垃圾回收

    摘要:函數(shù)的參數(shù)作為引用時唯一支持的參數(shù)傳遞模式是共享傳參,它指函數(shù)的形參獲得實參中各個引用的副本,即形參是實參的別名。而在上面這個例子中,類的屬性實際上是形參所指向的對象所指對象,的別名。 《流暢的Python》筆記本篇是面向?qū)ο髴T用方法的第一篇,一共六篇。本篇主要是一些概念性的討論,內(nèi)容有:Python中的變量,對象標(biāo)識,值,別名,元組的某些特性,深淺復(fù)制,引用,函數(shù)參數(shù),垃圾回收,de...

    Batkid 評論0 收藏0
  • 流暢的python讀書筆記-第八章-對象引用變性垃圾回收

    摘要:運算符比較兩個對象的標(biāo)識函數(shù)返回對象標(biāo)識的整數(shù)表示。實際上,每個對象都會統(tǒng)計有多少引用指向自己。對象被銷毀了,調(diào)用了回調(diào),的值變成了。當(dāng)對象的引用數(shù)量歸零后,垃圾回收程序會把對象銷毀。引用的目標(biāo)對象稱為所指對象。 對象不是個盒子 showImg(https://segmentfault.com/img/bV95mW?w=1784&h=988); class Gizmo: def...

    zgbgx 評論0 收藏0
  • python對象引用,變性垃圾回收

    摘要:對象引用和可變性變量不是盒子,而是便利貼變量的賦值方式比如是將一個變量分配給一個對象比如整數(shù)。運算符比較兩個對象的標(biāo)識函數(shù)返回對象標(biāo)識的整數(shù)表示。每個對象都會統(tǒng)計有多少引用指向自己。對象被銷毀執(zhí)行回調(diào)函數(shù)輸出 對象引用和可變性 變量不是盒子,而是‘便利貼’ >>> a = [1,2,3] >>> b = a >>> a.append(5) >>> a [1, 2, 3, 5] >>> ...

    chavesgu 評論0 收藏0
  • 萬物之基礎(chǔ)——對象

    摘要:每個對象均有標(biāo)識符類型值。通常我們認(rèn)為當(dāng)這些對象被垃圾回收機制回收時,它占用的外部資源即被釋放。造物主類型對象的類型幾乎影響了該對象的所有功能,在某種程度上,對象的標(biāo)識符也受其類型的影響。 原文地址 對象 對象(Objects)是python中數(shù)據(jù)的抽象,python中所有的數(shù)據(jù)均可以用對象或者是對象之間的關(guān)系來表示。每個對象均有標(biāo)識符(identity)、類型(type)、值(val...

    douzifly 評論0 收藏0

發(fā)表評論

0條評論

Flands

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<