2018-01-11:深入理解Python中的對象,變量,賦值和綁定等概念

Python入門非常的簡單, 語法相當(dāng)清晰, 可讀性非常好, 編程效率高等優(yōu)點.

雖然入門很簡單, 但是如果要深入Python這門語言, 我們還需要準確理解Python中的各種內(nèi)在機制. 否則后面越學(xué)越艱難.

今天, 要講的內(nèi)容很關(guān)鍵, 特別是對于初學(xué)者來說:
理解Python中對象, 變量, 賦值, 綁定, 復(fù)制的本質(zhì).


什么是對象?什么是可變對象與不可變對象?
Python中的一切皆對象!
在Python中, 對象是一個內(nèi)存實體, 對象分為可變對象和不可變對象, 其中不可變對象指的是對象一旦被創(chuàng)建, 其內(nèi)存空間是不可以改變的, 也就是內(nèi)容不可更改, 例如數(shù)字和字符串都是不可變對象, 元組也是不可變對象, 一經(jīng)創(chuàng)建就不可修改.
可變對象指的是對象被創(chuàng)建之后, 其內(nèi)存空間可以伸縮,內(nèi)存中的內(nèi)容可以被修改, 內(nèi)存中的元素可以是多種類型. 對象中的元素既可以是可變對象, 也可以是不可變對象, 還可以是變量.


什么是變量?什么是對象的引用?什么是綁定?什么是重綁定?
Python中的變量,就是對象的引用,從詞性來講都是名詞,也就是說其性質(zhì)跟對象差不多,只不過變量存儲的內(nèi)容是被引用對象的內(nèi)存地址.
綁定(binding)和重綁定(rebinding),從詞性來講都是動詞,即一種操作.
綁定:顧名思義,就是將變量與對象綁定在一起,方便后期對對象的操作.
重綁定:就是與原來的對象解綁,并將該變量重新與其他的對象綁定在一起.


什么是引用計數(shù)?什么是自動垃圾回收?
通過上面的講解,我們知道Python中的變量就是綁定到某一個對象的對象引用,這里我們不要糾結(jié)于對象引用的字面意思,其實就是引用對象的意思。因為變量是名詞,所以與之對應(yīng)的就是對象引用.
講完了對象引用,那什么是引用計數(shù)呢?其實啊,引用計數(shù)就是有一個專門程序用來統(tǒng)計對象被對少個變量引用了,說白了就是一個對象被多少個變量綁定了,比如說對象A與變量b和變量c都進行了綁定,那么該對象的引用計數(shù)就是2,如果變量b及變量c先后與對象A解綁,那么引用計數(shù)就分別是1和0,注意:當(dāng)引用計數(shù)為0時,就會觸發(fā)垃圾回收程序,將對象A當(dāng)作無用的垃圾從內(nèi)存中刪除掉,釋其占用的內(nèi)存.


什么是淺拷貝?什么是深拷貝?
淺拷貝的本質(zhì)其實就是綁定操作,多個變量綁定到同一個對象,則其中的任何一個變量都可以操作該對象. 因此其內(nèi)容可以被任何綁定它的變量所改變. 淺拷貝操作符是"=".
深拷貝需要調(diào)用專有的copy()函數(shù)來實現(xiàn)創(chuàng)建一個對象的副本。而不是像淺拷貝那樣吧變量綁定到對象上.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。