<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.

      相關推薦
      熱點推薦
      廣東人特意跑威海看雪:晚上路上沒什么人,都是南方人在玩雪

      廣東人特意跑威海看雪:晚上路上沒什么人,都是南方人在玩雪

      瀟湘晨報
      2026-01-12 17:06:12
      馬年“春晚”排成這樣,我斷言:觀眾看完,會站起來鼓掌

      馬年“春晚”排成這樣,我斷言:觀眾看完,會站起來鼓掌

      皮皮電影
      2026-01-12 13:35:03
      中國表達了對伊朗政權的支持

      中國表達了對伊朗政權的支持

      桂系007
      2026-01-12 23:41:10
      原中央黨校副校長總結“中國官場三大定律”

      原中央黨校副校長總結“中國官場三大定律”

      霹靂炮
      2026-01-12 21:18:44
      讓人眼紅!合川呆呆3天漲粉175萬,預計收入400萬,96個大哥守護

      讓人眼紅!合川呆呆3天漲粉175萬,預計收入400萬,96個大哥守護

      火山詩話
      2026-01-13 06:57:26
      百萬粉絲網紅“你的渡口”去世,知情人:系熬夜猝死,遺體已火化;是多年潮流圈博主,曾參賽《說唱聽我的》

      百萬粉絲網紅“你的渡口”去世,知情人:系熬夜猝死,遺體已火化;是多年潮流圈博主,曾參賽《說唱聽我的》

      大風新聞
      2026-01-13 08:02:04
      砸盤了,廣州某網紅樓盤暴跌70%,從3.7萬/平跌到1.1萬/平!

      砸盤了,廣州某網紅樓盤暴跌70%,從3.7萬/平跌到1.1萬/平!

      黯泉
      2026-01-12 22:13:32
      這下子,特朗普算是明白,為什么前任都不敢動委內瑞拉了

      這下子,特朗普算是明白,為什么前任都不敢動委內瑞拉了

      諦聽骨語本尊
      2026-01-12 13:59:10
      中國導演奪金球大獎「當場傻住」 她現身全場起立…李奧納多上臺了

      中國導演奪金球大獎「當場傻住」 她現身全場起立…李奧納多上臺了

      ETtoday星光云
      2026-01-12 14:18:06
      美國移民特工射殺三孩媽媽反轉了?還不如不反轉呢

      美國移民特工射殺三孩媽媽反轉了?還不如不反轉呢

      韜聞
      2026-01-12 10:51:02
      變味了!呆呆與合川文旅忙了一整天攢的好感,全被紅衣女網紅敗光

      變味了!呆呆與合川文旅忙了一整天攢的好感,全被紅衣女網紅敗光

      阿纂看事
      2026-01-12 15:03:18
      官方披露!馬杜羅瑞士個人賬戶坐擁127噸黃金

      官方披露!馬杜羅瑞士個人賬戶坐擁127噸黃金

      老馬拉車莫少裝
      2026-01-12 18:14:12
      克洛普執教皇馬提四大硬要求:必須挖利物浦核心,兩大巨星遭清洗

      克洛普執教皇馬提四大硬要求:必須挖利物浦核心,兩大巨星遭清洗

      瀾歸序
      2026-01-13 02:28:10
      馬斯克173分鐘訪談:當智力成本歸零,普通人唯一的護城河在哪?

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

      小8說科技
      2026-01-12 15:05:57
      格陵蘭島本就不是丹麥的!從歷史根兒上算,真正歸屬早有定論

      格陵蘭島本就不是丹麥的!從歷史根兒上算,真正歸屬早有定論

      福建平子
      2026-01-12 10:33:34
      澤連斯基引發的鏈式反應:敘利亞、哈馬斯、黎巴嫩真主黨、委內瑞拉、伊朗

      澤連斯基引發的鏈式反應:敘利亞、哈馬斯、黎巴嫩真主黨、委內瑞拉、伊朗

      高博新視野
      2026-01-08 20:22:29
      網傳某“降糖”中藥摻入西藥二甲雙胍,央視20年前就曝過類似案例

      網傳某“降糖”中藥摻入西藥二甲雙胍,央視20年前就曝過類似案例

      爆角追蹤
      2026-01-12 11:00:49
      真是見鬼了!廣州大型超市一個接一個倒閉,而山姆在廣州又開店

      真是見鬼了!廣州大型超市一個接一個倒閉,而山姆在廣州又開店

      夜深愛雜談
      2026-01-12 20:57:24
      武漢人逛了88年的中百,一年關30家店!老牌商超為啥越轉型越難?

      武漢人逛了88年的中百,一年關30家店!老牌商超為啥越轉型越難?

      青眼財經
      2026-01-12 22:35:44
      善惡到頭終有報!57歲央視女主持王小丫,已經走上另一條大路。

      善惡到頭終有報!57歲央視女主持王小丫,已經走上另一條大路。

      原夢叁生
      2026-01-13 00:39:49
      2026-01-13 09:20:49
      MediaTea
      MediaTea
      專業的數字媒體、新媒體技術
      1704文章數 72關注度
      往期回顧 全部

      科技要聞

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

      頭條要聞

      針對中國稀土 貝森特很惱火:其它國家怎么一點不著急

      頭條要聞

      針對中國稀土 貝森特很惱火:其它國家怎么一點不著急

      體育要聞

      一場安東尼奧式勝利,給中國足球帶來驚喜

      娛樂要聞

      蔡少芬結婚18周年,與張晉過二人世界

      財經要聞

      年化400% 高利網貸“變形記”

      汽車要聞

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

      態度原創

      親子
      時尚
      本地
      數碼
      家居

      親子要聞

      原來生氣可以這么可愛的?傲嬌寶寶:那可不咋滴!

      走過那個夏天,甜茶終于站上金球獎之巔

      本地新聞

      云游內蒙|“包”你再來?一座在硬核里釀出詩意的城

      數碼要聞

      聯想Q4、全年都是冠軍,蘋果怎么排都是第四

      家居要聞

      包絡石木為生 野性舒適

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 又大又粗又硬又爽黄毛少妇 | 精品国产青草久久久久福利 | 东兰县| 亚洲日韩一区二区| 成人在线超碰| 99精品福利视频| 精品黄色av一区二区三区| 国产色无码专区在线观看| 免费裸体无遮挡黄网站免费看| 女性| 精品乱码一区内射人妻无码| 不卡黄片| 中文字幕精品无亚洲字幕| 岳乳丰满一区二区三区| 亚洲AV男人的天堂在线观看| 久久婷婷成人综合色综合| 少妇伦子伦精品无吗| 午夜精品久久久久久久久| 18亚洲AV无码成人网站国产| 国产亚洲成av人片在线观看| 熟女白浆精品一区二区| 无码国产精品成人| 狠狠干影院| 亚洲国产成人精品无码区在线观看| 婷婷五月花| 一本之道AV无码专区| 日韩91| 加勒比无码av中文字幕| 骚虎视频在线观看| 99热都是精品久久久久久| 久久精品蜜芽亚洲国产av| 亚洲AV无码片在线播放| 国产三级精品三级在线专区1| av手机版天堂网免费观看| 无码少妇精品一区二区免费动态| 亚洲成av人片在www色猫咪| 午夜家庭影院| 瑞金市| 2021久久精品国产99国产精品 | 欧美成人精品三级网站视频| 欲色欲色天天天www|