在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳談Python的數據模型和對象模型

如意 ? 來源:PythonMind ? 作者:dongfanger ? 2021-02-10 15:59 ? 次閱讀

數據模型==對象模型

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

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

對象三要素

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

identity

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

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

type

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

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

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

結果為:

詳談Python的數據模型和對象模型

value

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

對象容器

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

對象回收

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

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

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

類型決定一切

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

a = 1

b = 1

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

但是對于可變類型:

c = []

d = []

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

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

小結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89578
  • 模型
    +關注

    關注

    1

    文章

    3306

    瀏覽量

    49223
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85038
收藏 人收藏

    評論

    相關推薦

    基于面向對象數據模型的信息管理系統

    探討了面向對象數據模型信息管理系統的結構設計和信息管理系統實現技術。系統設計采用面向對象數據模型數據庫結構采用
    發表于 02-21 11:35 ?14次下載

    基于對象模型的通用網絡考試平臺的數據設計

    利用面向對象技術分析解決問題的優勢,建立起通用網絡考試平臺系統的對象數據模型,然后采用特定的策略將該對象模型轉變為關系
    發表于 08-15 09:14 ?6次下載

    基于MDA的面向對象時空數據模型研究

    本文以模型驅動架構(MDA)為理論基礎,以事件驅動的方法構建面向對象時空數據模型,探索在關系數據庫及對象關系型GIS平臺下進行面向
    發表于 07-26 16:57 ?9次下載

    什么是層次數據模型數據流量分析

    什么是層次數據模型 用層次結構表示實體類型及實體間聯系的數據模型稱為層次數據模型(hierarchical datamodel)。層次結構是樹結構,樹的結點是記錄類型,非根結點有且
    發表于 06-17 08:13 ?1586次閱讀

    什么是ActiveDirectory數據模型、數字數據網絡

    什么是ActiveDirectory數據模型 從 LDAP 數據模型演化而來的模型。該目錄用來保存對象,這些對象代表了由屬性描述的各種端口
    發表于 06-17 08:13 ?1099次閱讀

    數據模型概念及類型劃分

      數據(data)是描述事物的符號記錄。模型(Model)是現實世界的抽象。數據模型(Data Model)是數據特征的抽象,是數據庫管理
    發表于 08-03 15:05 ?8118次閱讀

    概率XML數據模型的綜述

    首先介紹了概率XML數據管理技術的概念,特點和挑戰;其次綜述了概率XML數據和概率XML數據模型,各種模型的核心思想都來自于可能世界模型,通
    發表于 12-26 11:08 ?20次下載
    概率XML<b class='flag-5'>數據模型</b>的綜述

    Google Dremel數據模型講解

    首先簡單介紹一下 Dremel 是什么,能解決什么問題。第二部分著重講 Dremel 的數據模型,即數據結構。第三部分將談一下在此數據結構上設計的算法。Dremel 的數據模型起源于分
    發表于 11-28 17:05 ?4365次閱讀
    Google Dremel<b class='flag-5'>數據模型</b>講解

    數據模型的概念和作用

    數據模型(DataModel)是現實世界數據特征的抽象,或者說是現實世界的數據模擬。數據庫中,用數據模型來抽象地表示現實世界的
    的頭像 發表于 02-28 15:55 ?1.6w次閱讀

    數據模型的三要素

    本視頻主要詳細介紹了數據模型的三要素,分別是數據結構、數據操作和數據約束。
    的頭像 發表于 02-28 15:57 ?2.3w次閱讀

    數據模型有哪些種類

    數據庫的類型是根據數據模型來劃分的,而任何一個DBMS也是根據數據模型有針對性地設計出來的,這就意味著必須把數據庫組織成符合DBMS規定的數據模型
    的頭像 發表于 02-28 16:00 ?2.9w次閱讀

    智能電網的數據模型標準

    數據模型標準可以在智能電網架構模型的信息層表示。將數據模型從通信協議和技術中解耦的概念,被越來越多地應用于電力系統相關的標準化工作中。通過引入的數據模型和通信服務之間的適配層[如IEC
    發表于 06-10 14:46 ?1443次閱讀

    Modbus協議的數據模型和地址模型

    在使用Modbus協議的時候,經常會遇到諸如40001、30001,10001之類的地址,這些數字代表什么含義呢?這其實是Modbus協議的數據模型和地址模型
    發表于 04-07 09:28 ?3532次閱讀

    Matter的數據模型和開發

    在第一篇內容中,我們介紹了智能家居互聯標準 Matter會帶來什么好處。本文,我們來了解一下Matter的數據模型和開發。
    的頭像 發表于 12-01 10:18 ?1560次閱讀

    CSON使用實例:定義數據模型

    ; char *user; struct project *cson;}; 定義數據模型: 對每一個需要使用cson的結構體,都需要定義相對應的數據模型 /** 項目結構體數據模型
    的頭像 發表于 10-07 11:10 ?1857次閱讀
    主站蜘蛛池模板: 日日插夜夜爽 | 欧美另类videos| 特黄特色大片免费视频大全 | 激情九月婷婷 | 色视频在线观看在线播放 | 国产福利在线观看一区二区 | 亭亭色| 午夜神马福利影院 | 亚洲操综合| 日韩毛片免费在线观看 | 人人舔人人爱 | 午夜一级影院 | 制服丝袜在线一区 | www.色五月.com | 性网站免费 | 免费人成年激情视频在线观看 | 国产片无遮挡在线看床戏 | 五月婷婷六月丁香激情 | 成人午夜在线观看国产 | 久久免费视频网站 | www.婷婷.com| 日本欧美一区二区三区不卡视频 | 久久天天躁狠狠躁夜夜2020一 | 一区二区三区免费 | 精品卡1卡2卡三卡免费视频 | aa2424在线视频看片 | 午夜色a大片在线观看免费 午夜色大片在线观看 | 久久精品视频免费播放 | 4虎 影视 免费| 日本不卡高清免费 | 亚州视频一区 | 天天干天天上 | 欧美日本一区二区三区道 | 亚欧毛片基地国产毛片基地 | 国产传媒在线观看视频免费观看 | 国产福利毛片 | 色香色香欲天天天影视综合网 | 欧美 亚洲 一区 | 99精品国产高清自在线看超 | 午夜理伦片免费 | 中文字幕在线天堂 |