摘要:每個(gè)變量都有標(biāo)識(shí)類型和值對(duì)象一旦創(chuàng)建它的標(biāo)識(shí)絕不會(huì)變標(biāo)識(shí)可以簡(jiǎn)單的理解為對(duì)象在內(nèi)存中的地址別名跟是別名指向如果增加新的內(nèi)容也會(huì)增加相等性為運(yùn)算符比較連個(gè)對(duì)象的值對(duì)象中保存的數(shù)據(jù)標(biāo)識(shí)為因?yàn)樗麄兌贾赶蜻@個(gè)列表比較對(duì)象的標(biāo)識(shí)元組相對(duì)不可變性元組保
a = [1,2,3,4] b = a
每個(gè)變量都有標(biāo)識(shí),類型和值.對(duì)象一旦創(chuàng)建,它的標(biāo)識(shí)絕不會(huì)變;標(biāo)識(shí)可以簡(jiǎn)單的理解為對(duì)象在內(nèi)存中的地址.
別名 a 跟 b 是別名指向 [1,2,3,4],如果a增加新的內(nèi)容,b也會(huì)增加.
相等性 b == a 為 true.==運(yùn)算符比較連個(gè)對(duì)象的值(對(duì)象中保存的數(shù)據(jù))
標(biāo)識(shí) b is a 為true,因?yàn)樗麄兌贾赶?[1,2,3,4] 這個(gè)列表,is比較對(duì)象的標(biāo)識(shí)
元組相對(duì)不可變性
元組保存對(duì)象的引用,跟python的集合set一樣,如果引用的元素是可變的,即便元組本身不可變,元素依然可變.即:元組的不可變形其實(shí)指tuple數(shù)據(jù)結(jié)構(gòu)的物理內(nèi)容(即保存的引用)不可變,與引用對(duì)象無(wú)關(guān)
默認(rèn)做淺層復(fù)制
淺層復(fù)制 : 1.復(fù)制了最外層容器,副本中的元素是源容器中元素的引用 2.他們的值相等,單兩者指向不同的對(duì)象. 3.副本共享內(nèi)部對(duì)象的引用
淺層復(fù)制
若所有元素都是不可變的,不存在任何問(wèn)題,并節(jié)省了內(nèi)存.
如果存在可變的元素,如list會(huì)導(dǎo)致意想不到的問(wèn)題.
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] 是一個(gè)list可變的元素,所有以l2[1]的元素也發(fā)生變化 l2[1] +=[33,22] l2[2] += (10,11) # l2[2]是tuple,不可變的元素所有只有l(wèi)2[2]發(fā)生變化.
深層復(fù)制,副本不共享內(nèi)部對(duì)象的引用
函數(shù)的參數(shù)作為引用時(shí)
python中唯一支持的參數(shù)傳遞模式是共享傳參 call by sharing
共享傳參:函數(shù)的各個(gè)形式參數(shù)獲得實(shí)參中各個(gè)運(yùn)用的副本,即是函數(shù)內(nèi)部的形參是實(shí)參的別名
影響:函數(shù)可能會(huì)修改作為參數(shù)傳入的可變對(duì)象,但無(wú)法修改那些對(duì)象的標(biāo)識(shí)
不要使用可變類型作為參數(shù)的默認(rèn)值
可變參數(shù)作為默認(rèn)值會(huì)導(dǎo)致:如果么有指定內(nèi)容,會(huì)共用一個(gè)對(duì)象.所以通常使用Nono作為接收可變值得參數(shù)的默認(rèn)值.
防御可變參數(shù)
如果定義函數(shù)的接受可變參數(shù),應(yīng)該謹(jǐn)慎的考慮調(diào)用方是否期望修改傳入的參數(shù).
del和垃圾回收
對(duì)象絕不會(huì)自行銷毀;然而,無(wú)法得到對(duì)象時(shí),可能會(huì)被當(dāng)做垃圾處理.一個(gè)對(duì)象的引用數(shù)量為0的話會(huì)被銷毀
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42372.html
摘要:一對(duì)象引用基礎(chǔ)知識(shí)變量是標(biāo)注而不是容器。也就是說(shuō)元組中不可變的是元素的標(biāo)識(shí),但元組的值會(huì)隨著引用的可變對(duì)象變化而變化。在中每個(gè)對(duì)象的引用都會(huì)有統(tǒng)計(jì)。弱引用不會(huì)妨礙對(duì)象被當(dāng)做垃圾回收。 導(dǎo)語(yǔ):本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之面向?qū)ο笃闹攸c(diǎn)知識(shí)及個(gè)人心得,打算入門(mén)Python的朋友們可以來(lái)一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、明確變量保存的是引用這一本質(zhì);2、熟悉對(duì)象引用的基礎(chǔ)知識(shí);...
摘要:函數(shù)的參數(shù)作為引用時(shí)唯一支持的參數(shù)傳遞模式是共享傳參,它指函數(shù)的形參獲得實(shí)參中各個(gè)引用的副本,即形參是實(shí)參的別名。而在上面這個(gè)例子中,類的屬性實(shí)際上是形參所指向的對(duì)象所指對(duì)象,的別名。 《流暢的Python》筆記本篇是面向?qū)ο髴T用方法的第一篇,一共六篇。本篇主要是一些概念性的討論,內(nèi)容有:Python中的變量,對(duì)象標(biāo)識(shí),值,別名,元組的某些特性,深淺復(fù)制,引用,函數(shù)參數(shù),垃圾回收,de...
摘要:運(yùn)算符比較兩個(gè)對(duì)象的標(biāo)識(shí)函數(shù)返回對(duì)象標(biāo)識(shí)的整數(shù)表示。實(shí)際上,每個(gè)對(duì)象都會(huì)統(tǒng)計(jì)有多少引用指向自己。對(duì)象被銷毀了,調(diào)用了回調(diào),的值變成了。當(dāng)對(duì)象的引用數(shù)量歸零后,垃圾回收程序會(huì)把對(duì)象銷毀。引用的目標(biāo)對(duì)象稱為所指對(duì)象。 對(duì)象不是個(gè)盒子 showImg(https://segmentfault.com/img/bV95mW?w=1784&h=988); class Gizmo: def...
摘要:對(duì)象引用和可變性變量不是盒子,而是便利貼變量的賦值方式比如是將一個(gè)變量分配給一個(gè)對(duì)象比如整數(shù)。運(yùn)算符比較兩個(gè)對(duì)象的標(biāo)識(shí)函數(shù)返回對(duì)象標(biāo)識(shí)的整數(shù)表示。每個(gè)對(duì)象都會(huì)統(tǒng)計(jì)有多少引用指向自己。對(duì)象被銷毀執(zhí)行回調(diào)函數(shù)輸出 對(duì)象引用和可變性 變量不是盒子,而是‘便利貼’ >>> a = [1,2,3] >>> b = a >>> a.append(5) >>> a [1, 2, 3, 5] >>> ...
摘要:每個(gè)對(duì)象均有標(biāo)識(shí)符類型值。通常我們認(rèn)為當(dāng)這些對(duì)象被垃圾回收機(jī)制回收時(shí),它占用的外部資源即被釋放。造物主類型對(duì)象的類型幾乎影響了該對(duì)象的所有功能,在某種程度上,對(duì)象的標(biāo)識(shí)符也受其類型的影響。 原文地址 對(duì)象 對(duì)象(Objects)是python中數(shù)據(jù)的抽象,python中所有的數(shù)據(jù)均可以用對(duì)象或者是對(duì)象之間的關(guān)系來(lái)表示。每個(gè)對(duì)象均有標(biāo)識(shí)符(identity)、類型(type)、值(val...
閱讀 2649·2021-11-23 09:51
閱讀 3413·2021-11-22 15:22
閱讀 1942·2021-11-18 13:22
閱讀 2399·2021-09-24 09:48
閱讀 1370·2019-08-29 13:58
閱讀 1369·2019-08-26 13:39
閱讀 2510·2019-08-26 10:48
閱讀 3104·2019-08-26 10:21