国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python數(shù)據(jù)模型與Python對象模型的相關總結

瀏覽:14日期:2022-06-29 09:43:51
數(shù)據(jù)模型==對象模型

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

官方文檔嚴謹說法,Python程序中的所有數(shù)據(jù)都是用對象或對象之間的關系來表示的。

對象三要素

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

identity

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

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

type

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

JavaScript是弱類型語言,在Python中1+'2'會運行失敗,在JavaScript中能運行成功。

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

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

結果為:

1407150002070082136059506160140715000207008value

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

對象容器

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

對象回收

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

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

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

類型決定一切

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

a = 1b = 1

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

但是對于可變類型:

c = []d = []

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

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

小結

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

參考資料:

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

以上就是Python數(shù)據(jù)模型與Python對象模型的相關總結的詳細內容,更多關于python數(shù)據(jù)模型與對象模型的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲欧美视频在线 | 九九久久九九久久 | 亚洲国产爱久久全部精品 | 一级国产a级a毛片无卡 | 一级黄色免费网站 | 国产成人免费午夜性视频 | 超矿碰人人超人人看 | 亚洲日本高清成人aⅴ片 | 欧美午夜毛片a级在线 | 国产成人亚洲欧美三区综合 | 91热成人精品国产免费 | 色视频www在线播放国产人成 | 99久久精品国产片 | 性欧美欧美巨大69 | 91精品国产一区二区三区四区 | 久久久9999久久精品小说 | a级毛片在线视频免费观看 a级免费 | 手机看成人免费大片 | 香港经典毛片a免费观看 | 999热精品这里在线观看 | 欧美成人69| 老司机午夜性生免费福利 | 免费观看视频成人国产 | 国产成人精品福利网站在线 | 韩国19禁主播裸免费福利 | 欧美一级第一免费高清 | 国产成人爱片免费观看视频 | a级成人高清毛片 | 高清精品女厕在线观看 | 中文久久 | 成人一级视频 | 丁香狠狠色婷婷久久综合 | 亚洲人成网站色7799在线观看 | 99福利网 | 9191久久久久视频 | 真实国产精品视频国产网 | 国产成人高清精品免费5388密 | 久久久久久久91精品免费观看 | 国产精品午夜性视频 | 在线播放第一页 | 国产乱子伦片免费观看中字 |