婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)

Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)

熱門標(biāo)簽:智能電話機(jī)器人調(diào)研 400電話在線如何申請 滴滴地圖標(biāo)注公司 地圖標(biāo)注可以遠(yuǎn)程操作嗎 甘肅高頻外呼系統(tǒng) 天津塘沽區(qū)地圖標(biāo)注 杭州房產(chǎn)地圖標(biāo)注 江門智能電話機(jī)器人 如何申請400電話代理

數(shù)據(jù)模型==對象模型

Python官方文檔說法是“Python數(shù)據(jù)模型”,大多數(shù)Python書籍作者說法是“Python對象模型”,它們是一個意思,表示“計(jì)算機(jī)編程語言中對象的屬性”。這句話有點(diǎn)抽象,只要知道對象是Python對數(shù)據(jù)的抽象,在Python中萬物皆對象就可以了。

官方文檔嚴(yán)謹(jǐn)說法,Python程序中的所有數(shù)據(jù)都是用對象或?qū)ο笾g的關(guān)系來表示的。

對象三要素

對象有三個要素:編號(identity)、類型(type)、值(value)。

identity

編號就是對象的內(nèi)存地址,從創(chuàng)建后就不會改變。is運(yùn)算符用來比較2個對象的編號。id()函數(shù)返回對象編號的整數(shù)表示。

identity也可以翻譯為身份,對象身份。

type

類型決定了可以對對象做哪些操作,也定義了對象的可能值,比如intbool類型的值就不一樣。type()函數(shù)返回對象類型。很多人會誤以為Python是弱類型語言,其實(shí)Python是強(qiáng)類型語言,這個誤解的真實(shí)原因是,Python不需要編譯,不需要提前知道變量的類型,在運(yùn)行時才檢查類型,這應(yīng)該叫做動態(tài)語言。

JavaScript是弱類型語言,在Python中1+"2"會運(yùn)行失敗,在JavaScript中能運(yùn)行成功。

類型在創(chuàng)建后也不會改變,雖然可以進(jìn)行類型轉(zhuǎn)換,但轉(zhuǎn)換實(shí)際會產(chǎn)生新對象:

a = 1
print(id(a))
print(id(str(a)))
print(id(a))

結(jié)果為:

140715000207008
2136059506160
140715000207008

value

對象三要素中唯一能改變的就只有值了。官網(wǎng)有一句正確的廢話:允許改變值的對象是mutable(可變的),不允許改變值的對象是immutable(不可變的)。它的意義在于當(dāng)不可變對象的值是對可變對象的引用時,該如何判斷對象的可變性?結(jié)論是不可變對象仍然是不可變的,因?yàn)檫@個引用是不能變的,但是我們通常會認(rèn)為這個不可變對象的值是可變的,尤其是對象容器。對象類型也會決定是否可變,比如numbersstringstuples是不可變的,dictionarieslists是可變的。

對象容器

有些對象包含了對其他對象的引用,這叫做containers對象容器,比如tupleslistsdictionaries。大多數(shù)情況下,我們說容器的值,說的是引用的對象的值,而不是引用編號。但討論容器可變性時,則僅僅是指容器直接包含的引用編號。比如tuple是不可變的,如果它包含了對一個可變對象的引用后,當(dāng)該可變對象改變時容器的值也會改變。

對象回收

對象不會被顯式銷毀,但是它們會被當(dāng)做垃圾回收,只要不存在對象引用,這就是Python垃圾回收機(jī)制!垃圾回收機(jī)制比較復(fù)雜,比如循環(huán)引用,實(shí)際上已經(jīng)沒有使用了,但是還存在引用等,涉及到算法規(guī)則,等寫完P(guān)ython進(jìn)階,在寫Python原理時做進(jìn)一步研究。

Python垃圾回收機(jī)制不是銀彈,不能解決所有問題,所以在引用外部資源,比如打開文件后,我們需要注意顯式close,防止資源始終占用內(nèi)存,無法釋放,造成內(nèi)存泄漏。close除了手動調(diào)用close()方法外,也可以使用with來自動close。

使用try...except可能會讓對象繼續(xù)存活。

類型決定一切

對象的類型幾乎決定了對象的一切行為,甚至是對象編號,比如對于不可變類型:

a = 1
b = 1

a和b可能會指向同一個值為1的對象,也可能會指向兩個不同的值為1的對象,這取決于具體實(shí)現(xiàn)。

但是對于可變類型:

c = []
d = []

c和d一定會指向兩個不同的單獨(dú)的空列表。

注意c = d = [] 則是將同一個對象賦值給 c 和 d。

小結(jié)

Python數(shù)據(jù)模型就是常說的對象模型,萬物皆對象,有編號、類型、值三個要素。了解了對象模型后,Python另一個重要概念即將浮出水面,它就是數(shù)據(jù)結(jié)構(gòu)。

參考資料:

https://docs.python.org/3/reference/datamodel.html

以上就是Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)模型與對象模型的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python統(tǒng)計(jì)可散列的對象之容器Counter詳解
  • python面向?qū)ο蠡A(chǔ)之常用魔術(shù)方法
  • Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解
  • Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?
  • python學(xué)習(xí)之可迭代對象、迭代器、生成器
  • Python中的類對象示例詳解
  • Python中對象的比較操作==和is區(qū)別詳析
  • Python 轉(zhuǎn)移文件至云對象存儲的方法
  • python 對象真假值的實(shí)例(哪些視為False)
  • Python reversed反轉(zhuǎn)序列并生成可迭代對象
  • Python如何使用vars返回對象的屬性列表
  • Python通過getattr函數(shù)獲取對象的屬性值
  • python源碼剖析之PyObject詳解

標(biāo)簽:德宏 臨汾 漢中 重慶 河池 廊坊 長春 東莞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)》,本文關(guān)鍵詞  Python,數(shù)據(jù),模型,與,對象,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python數(shù)據(jù)模型與Python對象模型的相關(guān)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 南阳市| 咸丰县| 吉木萨尔县| 柘荣县| 曲阳县| 溧水县| 宁乡县| 龙州县| 蕉岭县| 翁源县| 呼图壁县| 麦盖提县| 大城县| 昌黎县| 阜宁县| 阜阳市| 德阳市| 临汾市| 新和县| 东台市| 甘肃省| 密云县| 阿坝县| 彭泽县| 侯马市| 大冶市| 安吉县| 南丹县| 巴彦淖尔市| 会泽县| 勐海县| 洛宁县| 静宁县| 读书| 平和县| 宜兰市| 彝良县| 明光市| 山东省| 通化市| 油尖旺区|