<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      Python:模塊 __dict__ 詳解

      0
      分享至

      在 Python 中,模塊(module)是一級命名空間對象。無論是通過 import 加載的標準庫模塊、第三方模塊,還是直接運行的腳本本身,每個模塊都以對象形式存在于內存中,并通過其 __dict__ 屬性統一管理所有模塊級名稱。

      理解模塊的 __dict__,不僅是掌握模塊工作機制的關鍵,也是深入理解 Python 命名空間模型、導入機制以及運行期動態行為的重要基礎。

      一、模塊對象與模塊命名空間

      (1)模塊是運行期對象,而非靜態概念

      在 Python 中,模塊不是“代碼文件”的抽象概念,而是運行期存在的實際對象。

      print(type(math))    #

      每一個模塊對象都擁有一組標準屬性,例如:

      ? __name__:模塊名稱

      ? __file__:模塊源文件路徑

      ? __spec__:模塊的導入規范

      ? __loader__:模塊加載器

      ? __dict__:模塊命名空間

      其中,__dict__ 是模塊命名空間的唯一物理載體,存儲了模塊中的所有名稱。

      (2)模塊 __dict__ 的定義

      模塊 __dict__ 表示模塊級的命名空間本身。模塊中通過賦值語句、函數定義、類定義、import 語句創建的所有名稱,最終都存儲在這個字典中。

      示例:

          pass

      加載后查看其命名空間:

      print(demo.__dict__.keys())

      輸出:

      dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__file__', '__cached__', '__builtins__', 'x', 'f', 'C'])

      可以看到,模塊 __dict__ 既包含用戶定義的變量、函數、類,也包含系統自動添加的元信息。

      二、types 模塊與 ModuleType 的作用

      為了準確理解模塊 __dict__,需要明確模塊對象的具體類型。

      (1)types 模塊的角色

      標準庫 模塊提供了對解釋器內部核心對象類型的標準化引用,如:

      ? FunctionType 函數類型

      ? MethodType 方法類型

      ? ModuleType 模塊類型

      ? GeneratorType 生成器類型

      這些不是“新類型”,而是對既有內置類型的正式命名,便于類型檢查和明確意圖。

      (2)ModuleType 的本質

      types.ModuleType 表示模塊對象的類型:

      print(type(math) is types.ModuleType)    # True

      所有通過 import 得到的模塊對象,本質上都是 ModuleType 的實例。

      (3)ModuleType 的構造語義

      types.ModuleType(name, doc=None)

      參數含義:

      ? name:模塊名(對應 __name__)

      ? doc: 模塊文檔字符串(對應 __doc__)

      示例:

      print(m.__dict__)   # {}

      (4)ModuleType 創建的是真實模塊對象

      需要明確的一點是,types.ModuleType 創建的并不是“偽模塊”,而是真正的模塊對象。區別僅在于:

      特性

      import 創建的模塊

      ModuleType 創建的模塊

      代碼執行

      自動執行模塊代碼

      不自動執行代碼

      __dict__ 填充

      自動填充

      初始為空字典

      系統屬性

      自動設置 __spec__、__loader__

      需手動設置

      注冊到 sys.modules

      自動注冊

      不自動注冊

      在對象模型層面,它們完全一致:

      print(type(m1) is type(m2))  # True

      (5)使用 ModuleType 的意義

      使用 ModuleType 的目的在于:隔離模塊對象結構本身與 import 機制的副作用。

      示例:

      print(m.__dict__)  # {'x': 42, 'hello': at ...>}

      這清晰地體現了:

      ? 模塊屬性 ≡ 模塊 .__dict__ 中的鍵值對

      ? 模塊命名空間完全由模塊 __dict__ 管理

      三、模塊 __dict__ 的生命周期

      模塊 __dict__ 的生命周期與模塊對象本身嚴格一致。

      (1)創建階段

      執行順序為:

      1、創建模塊對象:實例化 ModuleType

      2、初始化空 __dict__:創建空字典作為命名空間

      3、執行模塊代碼:逐條執行語句,將結果寫入 __dict__。

      exec(open('demo.py').read(), demo.__dict__)    # 導入過程的“概念性等價描述”

      (2)運行階段:動態可變

      模塊 __dict__ 是一個完全可寫的普通字典,可在運行時動態改變:

      del demo.__dict__['new_var']

      模塊在運行期可以:

      ? 動態添加屬性/刪除屬性

      ? 可被反射、注入、修改

      ? 作為插件系統的載體

      (3)銷毀階段

      當模塊對象被垃圾回收時,模塊 __dict__ 隨對象一同銷毀,其命名空間不再存在。

      通常,模塊會常駐內存,因為 sys.modules 持有對模塊對象的強引用。除非顯式從 sys.modules 中刪除,否則模塊對象及其 __dict__ 會一直存在。

      四、模塊 __dict__ 與屬性訪問機制

      模塊屬性訪問遵循簡單直接的規則:

      module.attr

      在屬性存在的情況下,在語義上等價于:

      module.__dict__['attr']

      二者在異常類型上略有差異。

      屬性訪問特點:

      ? 無方法綁定:模塊中的函數始終是普通函數對象。

      ? 無 MRO 查找:不存在繼承鏈查找。

      ? 無描述符處理:不涉及 __get__/__set__ 協議,即使模塊中存在實現了描述符協議的對象,模塊屬性訪問也不會觸發描述符綁定邏輯。

      ? 直接字典查找:屬性訪問就是字典鍵查找。

      示例:

      demo.f()  # 返回 "function",不會生成方法對象

      五、模塊 __dict__ 的典型用途

      (1)反射與調試

      可用于枚舉模塊成員、動態分析模塊結構以及 REPL / 調試器實現。

      pdb.set_trace()  # 調試器內部使用 __dict__ 訪問局部變量

      (2)動態注入 API

      常見于插件系統、框架自動注冊以及運行期擴展接口。

          sys.modules[module_name] = module

      (3)框架自動注冊

          return decorator

      六、不同對象的命名空間對比

      對象類型

      __dict__ 特性

      可變性

      特殊行為

      實例

      普通 dict

      完全可變

      支持屬性訪問協議

      mappingproxy

      需通過賦值語句

      支持繼承、描述符

      模塊

      普通 dict(完全可寫)

      完全可變

      直接字典映射

      模塊是唯一一個頂層、全局、完全可變的命名空間對象,這也是它常被用作配置容器、插件載體、全局狀態管理的原因。

      小結

      模塊 __dict__ 是模塊命名空間的實體載體,保存了模塊中定義的全部名稱。模塊對象本質上是 types.ModuleType 的實例,其 __dict__ 是一個普通、完全可寫的字典。模塊加載時,解釋器創建模塊對象并逐步填充其 __dict__;運行期中,該字典可被動態修改。模塊屬性訪問直接映射到 __dict__ 查找,不涉及方法綁定或 MRO。

      理解模塊 __dict__,是理解 Python 命名空間、import 機制以及動態特性的關鍵基礎。


      點贊有美意,贊賞是鼓勵

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      北京又遭爆冷吞連敗!史密斯45+9+9獻關鍵三分 周琦9+10杰曼34+6

      北京又遭爆冷吞連敗!史密斯45+9+9獻關鍵三分 周琦9+10杰曼34+6

      顏小白的籃球夢
      2026-01-11 21:33:30
      230:196!美國投票結果公布,特朗普怒不可遏

      230:196!美國投票結果公布,特朗普怒不可遏

      聞識
      2026-01-12 11:40:34
      馬斯克173分鐘訪談:當智力成本歸零,普通人唯一的護城河在哪?

      馬斯克173分鐘訪談:當智力成本歸零,普通人唯一的護城河在哪?

      小8說科技
      2026-01-12 15:05:57
      腦梗的源頭被查出,肥肉沒上榜,第1名很多人可能每天都在吃!

      腦梗的源頭被查出,肥肉沒上榜,第1名很多人可能每天都在吃!

      全球軍事記
      2025-11-29 13:46:37
      委代總統會見中國大使,美國警告:委內瑞拉不能成中國的附庸國

      委代總統會見中國大使,美國警告:委內瑞拉不能成中國的附庸國

      青輝
      2026-01-12 16:51:22
      “200億帶貨先生”董宇輝,可能是最后一個超頭主播

      “200億帶貨先生”董宇輝,可能是最后一個超頭主播

      唐辰同學
      2026-01-11 21:54:28
      宋彬彬晚年回國道歉仍不被原諒,其父宋任窮也不愿提起她,為何

      宋彬彬晚年回國道歉仍不被原諒,其父宋任窮也不愿提起她,為何

      雍親王府
      2026-01-09 15:20:02
      兩次拒絕黎明,無視鐘漢良示愛,被折磨20年后55歲的她憔悴成大媽

      兩次拒絕黎明,無視鐘漢良示愛,被折磨20年后55歲的她憔悴成大媽

      青史樓蘭
      2025-12-29 10:12:14
      清朝收復準噶爾地盤損失有多大?看死了多少勛貴,名單觸目驚心!

      清朝收復準噶爾地盤損失有多大?看死了多少勛貴,名單觸目驚心!

      銘記歷史呀
      2026-01-12 13:41:52
      林書豪看F4成都演唱會,坐前排被言承旭喊話好靦腆,戴帽子有胡子

      林書豪看F4成都演唱會,坐前排被言承旭喊話好靦腆,戴帽子有胡子

      小娛樂悠悠
      2026-01-12 10:43:06
      洗碗機女主:制造爭議,吸引流量,開播,被封,主打一個完美

      洗碗機女主:制造爭議,吸引流量,開播,被封,主打一個完美

      TVB的四小花
      2026-01-11 06:02:24
      對 “臺獨劊子手”陳舒怡,必須抓捕歸案以平民憤、告忠魂!

      對 “臺獨劊子手”陳舒怡,必須抓捕歸案以平民憤、告忠魂!

      達文西看世界
      2026-01-12 14:14:16
      徹底清零!緬甸KK園區635棟涉賭詐建筑全數炸毀

      徹底清零!緬甸KK園區635棟涉賭詐建筑全數炸毀

      看看新聞Knews
      2026-01-11 12:45:02
      善惡有報,2025年塌房的六大網紅,為了流量各種作妖,不值得同情

      善惡有報,2025年塌房的六大網紅,為了流量各種作妖,不值得同情

      單手搓核彈
      2026-01-06 14:04:34
      特斯拉一員工建議員工加班,被全票通過立即開除,終身拉黑

      特斯拉一員工建議員工加班,被全票通過立即開除,終身拉黑

      歷史總在押韻
      2026-01-11 15:12:47
      外媒:經濟困境背后—伊朗民眾在反對什么?

      外媒:經濟困境背后—伊朗民眾在反對什么?

      隨波蕩漾的漂流瓶
      2026-01-12 17:40:10
      63歲老年癡呆父親顫巍巍掏出所有錢,哽咽求女兒:可以帶我去找媽媽嗎?

      63歲老年癡呆父親顫巍巍掏出所有錢,哽咽求女兒:可以帶我去找媽媽嗎?

      瀟湘晨報
      2026-01-12 11:14:11
      新華社消息|伊朗總統:決心解決好經濟困難 騷亂是美以陰謀

      新華社消息|伊朗總統:決心解決好經濟困難 騷亂是美以陰謀

      新華社
      2026-01-12 10:39:42
      超模卡門:77歲被騙光積蓄,83歲仍有性生活,91歲雙腿依舊迷人

      超模卡門:77歲被騙光積蓄,83歲仍有性生活,91歲雙腿依舊迷人

      豐譚筆錄
      2025-12-11 11:41:19
      25歲中國體操美女宣布生娃,曬與老公合影,曾參加東京奧運會

      25歲中國體操美女宣布生娃,曬與老公合影,曾參加東京奧運會

      米修體育
      2026-01-12 01:00:46
      2026-01-12 18:11:00
      MediaTea
      MediaTea
      專業的數字媒體、新媒體技術
      1701文章數 72關注度
      往期回顧 全部

      科技要聞

      面對SpaceX瘋狂“下餃子” 中國正面接招

      頭條要聞

      女子不會殺豬上千網友去幫忙 村干部:宰5頭豬吃流水席

      頭條要聞

      女子不會殺豬上千網友去幫忙 村干部:宰5頭豬吃流水席

      體育要聞

      聰明的球員,不是教練教出來的

      娛樂要聞

      閆學晶:脫離群眾太久 忘了自己的根

      財經要聞

      倍輕松信披迷霧 實控人占用資金金額存疑

      汽車要聞

      增配不加價 北京現代 第五代 勝達2026款上市

      態度原創

      家居
      手機
      親子
      游戲
      房產

      家居要聞

      包絡石木為生 野性舒適

      手機要聞

      紅魔11 Air來了 姜超:重新定義Air 同檔最強

      親子要聞

      姐妹在糾結月子里怎么洗漱,來聽聽金牌月嫂的建議

      幻獸帕魯官方卡牌桌游來了!7月30上市還有簡中

      房產要聞

      重磅調規!417畝商改住+教育地塊!海口西海岸又要爆發!

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 午夜拍拍| 一本一道久久综合狠狠老| 无码中文字幕网| 97在线碰| 中文字幕久久久久久久系列| 6699嫩草久久久精品影院| 综合偷自拍亚洲乱中文字幕| 美女扒开尿口让男人桶| 人妻无码专区| 精品一区二区三区免费播放| 妇女自拍偷自拍亚洲精品| 又硬又粗又大一区二区三区视频 | 亚洲韩国精品无码一区二区三区| 色婷婷六月亚洲婷婷丁香| 99视频在线精品免费观看6| 国产精品人一区二区三区| 国产毛a片啊久久久久久保和丸| 久草在线观看视频| 忘忧草社区在线www| 夜夜国自一区| 欧洲亚洲AV| 69精品人人人人| 国产亚洲精| 起碰免费公开97在线视频| 色九九视频| 微拍福利一区二区三区| 精品人妻伦九区久久aaa片69| 999zyz玖玖资源站永久| 久久无码中文字幕免费影院蜜桃| 人妻激情文学| 定远县| 性xxxx视频播放免费| 怡红院亚洲| 国产伦理自拍| 亚洲AV日韩AV永久无码电影| 亚洲天堂区| 欧美一区二区| 久久久久无码精品国产| 国产精品户外野外| 伊人69| 果冻传媒18禁免费视频|