ai學習--python部分-1.變量名及命名空間的存儲

初學代碼時總有一個問題困擾我:a = 10 ? ? ? # a指向地址0x1234(存儲10)
變量a的值10存儲在0x1234,那么變量a需要存儲嗎?a又存儲在什么地址呢

目錄

1. ??命名空間的本質??

2. ??命名空間的內存占用??

3. ??變量名 vs 變量值的存儲對比??

4. ??靜態語言(如C)的對比??

5. ??為什么需要命名空間???

6. ??總結??

7.小測試


1. ??命名空間的本質??

  • ??動態語言(如Python)??:
    變量名與值的綁定關系通過 ??命名空間字典??(如 globals())維護,但這個字典本身是一個 ??運行時動態創建的對象??,存儲在內存中。
    • ??變量名 "a"??:作為字典的 ??鍵(Key)??(字符串對象)存儲。
    • ??變量值 10??:作為字典的 ??值(Value)??(指向實際對象的引用)。
# 偽代碼展示Python內部實現(簡化版)
global_namespace = {"a": 0x1234,  # 鍵是字符串"a",值是對象10的地址"b": 0x5678   # 其他變量...
}

2. ??命名空間的內存占用??

  • ??存儲位置??:
    命名空間字典本身是一個 ??堆內存中的對象??,有獨立的內存地址(可通過 id(globals()) 查看)。
    print(hex(id(globals())))  # 輸出如0x55a1b2d3e0(命名空間字典的地址)
  • ??內存消耗??:
    • 每個鍵(變量名)作為字符串對象存儲,占用內存。
    • 每個值(變量引用)是指針(通常8字節,64位系統)。
    • 字典的哈希表結構還有額外開銷(如哈希桶、沖突處理)。

3. ??變量名 vs 變量值的存儲對比??

??存儲內容????存儲位置????示例(Python)??
??變量名 "a"??命名空間字典的鍵(堆內存)globals()["a"] 中的 "a"
??變量值 10??獨立對象(堆內存)id(a) 返回的地址(如 0x1234
??命名空間字典??堆內存中的對象id(globals()) 返回的地址(如 0x55a1b2d3e0

4. ??靜態語言(如C)的對比??

  • ??無運行時命名空間??:
    變量名在編譯后直接替換為固定內存地址,不占用運行時內存。
    int a = 10;  // 編譯后,所有對a的訪問變為對地址0x1000的操作
  • ??無字典開銷??:
    變量名僅在源碼和符號表中存在,編譯后的二進制文件中無痕跡。

5. ??為什么需要命名空間???

  • ??動態語言的靈活性??:
    Python 允許運行時動態添加/刪除變量(如 globals()["x"] = 100),必須維護變量名與值的映射關系。
  • ??作用域管理??:
    每個函數有獨立的 locals() 字典,實現變量隔離。

6. ??總結??

  • ??變量名存儲??:作為字符串鍵存在于命名空間字典中(堆內存)。
  • ??命名空間存儲??:字典對象本身占用內存(地址可通過 id(globals()) 獲取)。
  • ??核心區別??:
    • ??靜態語言??:變量名是編譯期概念,無運行時存儲。
    • ??動態語言??:變量名是運行時對象,需內存存儲以支持動態特性。

7.小測試

  • 多個變量的值相同的情況下,內存空間里是如何存儲的?(答案在下期)
  • 舉例:a=b=c=10

這種設計是 Python 等動態語言靈活性的代價——犧牲部分內存和速度換取開發便捷性。

元寶老師提供標準化答案,解釋權歸迪普斯克老師,侵刪~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82553.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode 3563. Lexicographically Smallest String After Adjacent Removals

Leetcode 3563. Lexicographically Smallest String After Adjacent Removals 1. 解題思路2. 代碼實現 題目鏈接:3563. Lexicographically Smallest String After Adjacent Removals 1. 解題思路 這次的最后一題同樣沒有自力搞定,簡直了…… 這道題還…

微信小程序之Promise-Promise初始用

我們來嘗試使用Promise。 1、需求&#xff0c;做個抽獎的按鈕&#xff0c; 抽獎規則&#xff1a; 30%的幾率中獎&#xff0c;中獎會提示恭喜恭喜&#xff0c;獎品為10萬 RMB 勞斯萊斯優惠券&#xff0c;沒中獎會提示再接再厲。 2、先搭界面&#xff1a; <view class&qu…

spring-boot-starter-data-redis應用詳解

一、依賴引入與基礎配置 添加依賴 在 pom.xml 中引入 Spring Data Redis 的 Starter 依賴&#xff0c;默認使用 Lettuce 客戶端&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis<…

全能郵箱全能郵箱:實現郵件管理的自動化!

全能郵箱全能郵箱&#xff1a;實現郵件管理的自動化&#xff01; 全能郵箱全能郵箱的配置教程&#xff1f;如何注冊烽火域名郵箱&#xff1f; 全能郵箱全能郵箱作為一種創新的郵件管理解決方案&#xff0c;正逐漸改變我們處理郵件的方式。蜂郵EDM將圍繞全能郵箱全能郵箱&…

Real2Render2Real:無需動力學仿真或機器人硬件即可擴展機器人數據

25年5月來自UC Berkeley 和 TRI 的論文“Real2Render2Real: Scaling Robot Data Without Dynamics Simulation or Robot Hardware”。 擴展機器人學習需要大量且多樣化的數據集。然而&#xff0c;現行的數據收集范式——人類遙操作——仍然成本高昂&#xff0c;且受到手動操作…

Cadence學習筆記之---PCB的布線與鋪銅

目錄 01 | 引 言 02 | 環境描述 03 | 布 線 04 | 鋪 銅 05 | 總 結 01 | 引 言 在上一篇文章中介紹了Cadence元件放置和布局相關的操作方法和步驟&#xff0c;當完成全部的器件布局后&#xff0c;就可以進行下一步&#xff1b; 本篇文章主要介紹Cadence中布線和鋪銅相關的…

redis-7.4.2 通過 systemd管理,rpmbuild spec文件參考

redis-7 和 redis 5 版本在配置為systemd 方式管理時&#xff0c;配置關于有些許區別&#xff0c;否則會報systemctl status redis 如下錯誤&#xff1a; redis.service: control process exited, codeexited status1 Failed to start Redis persistent key-value database. Un…

2025-05-26 什么是“AI 全棧”

AI全棧&#xff1a;模型 表示學習 向量庫 API UI 一句話定義&#xff1a; ? AI 全棧開發&#xff0c;是指開發者從原始文本/語音/圖像開始&#xff0c;結合大模型能力&#xff0c;構建完整應用閉環的技術能力棧。 AI全棧應用的過程 AI應用 ≠ 一個GPT接口&#xff0c;…

康師傅的“價值戰”答卷:一碗面的創新與擔當

低價策略、口味雷同、營銷跟風……方便面行業曾長期陷于同質化競爭的泥潭&#xff0c;不過近年來&#xff0c;行業競爭邏輯已悄然改變。 一方面來源于宏觀環境的變化&#xff0c;想要在縮量市場下保住大盤&#xff0c;一定要保持逆向思維的能力&#xff0c;另一方面&#xff0…

高性能管線式HTTP請求

高性能管線式HTTP請求:原理、實現與實踐 目錄 高性能管線式HTTP請求:原理、實現與實踐 1. HTTP管線化的原理與優勢 1.1 HTTP管線化的基本概念 關鍵特性: 1.2 管線化的優勢 1.3 管線化的挑戰 2. 高性能管線式HTTP請求的實現方案 2.1 技術選型與工具 2.2 Java實現:…

傳輸線上的信號速度與阻抗無關,主要由頻率決定

阻抗與傳播速度無關 通過計算我們可以知道&#xff0c;導體流過電流時&#xff0c;電子實際上的速度只有1cm/s。是很慢的。 導線的電阻對傳輸線上信號的傳播速度幾乎沒有任何影響。只在一些極端的情況下&#xff0c;互連的電阻才會影響信號的傳播速度&#xff0c;并且這個影響…

YOLOv1 詳解:單階段目標檢測算法的里程碑

在目標檢測領域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列算法憑借其高效性和實用性&#xff0c;成為了行業內的明星算法。其中&#xff0c;YOLOv1 作為 YOLO 系列的開山之作&#xff0c;首次提出了單階段目標檢測的思想&#xff0c;徹底改變了目標檢測算…

免費開源 PDF 閱讀器 自帶虛擬打印機功能 多格式兼容

各位辦公小能手們&#xff0c;今天咱來聊聊一款超厲害的PDF工具——PDFLite&#xff01; 這PDFLite啊&#xff0c;那可是輕量級、免費又開源的好東西。它能干啥呢&#xff1f;主要就是能讀PDF文件&#xff0c;還能轉換文件格式&#xff0c;做基礎的文檔管理。下面咱就說說它的…

Mac Python 安裝依賴出錯 error: externally-managed-environment

Mac Python 使用 ip3 install -r requirements.txt 出錯 This environment is externally managed ╰─> To install Python packages system-wide, try brew installxyz, where xyz is the package you are trying toinstall.If you wish to install a Python library th…

Windows11+WSL2+Ubuntu22 安裝

1.首先要獲得管理員權限 2.直接在電腦搜索欄搜索 “Turn Windows features on or off”, 勾選下面兩個條目&#xff1a; Virtual Machine Platform 和 Windows Subsystem for Linux 3.重啟電腦 4.電腦搜索欄搜索“Windows PowerShell”&#xff0c;運行下面命令設置WSL2為默…

解決 iTerm2 中 nvm 不生效的問題(Mac 環境)

解決 iTerm2 中 nvm 不生效的問題&#xff08;Mac 環境&#xff09; 標題 《為什么 iTerm2 無法使用 nvm&#xff1f;—— 解決 Mac 終端環境變量沖突指南》 問題描述 許多開發者在 Mac 上使用 nvm 管理 Node.js 版本時&#xff0c;發現&#xff1a; 原生終端&#xff1a;n…

React的單向數據綁定

文章目錄 單項數據綁定通過onChange方法&#xff0c;實現雙向數據綁定 單項數據綁定 在 Vue 中&#xff0c;可以通過 v-model 指令來實現雙向數據綁定。但是&#xff0c;在 React 中并沒有指令的概念&#xff0c;而且 React 默認不支持 雙向數據綁定。 React 只支持&#xff…

AWS関連職種向け:日本語面接QA集

1. 自己紹介&#xff08;じこしょうかい&#xff09; Q&#xff1a;簡単に自己紹介をお願いします。 A&#xff1a; はい、〇〇と申します。これまで約4年間、主にAWSを基盤としたインフラ設計?構築?運用に従事してまいりました。VPCやEC2、RDS、S3などの基本サービスの設計…

AlphaCore GPU 物理仿真引擎內測邀請

AlphaCore 是 MooreThreads 研發的下一代 GPU 物理仿真引擎&#xff0c;為影視特效&#xff0c;游戲交互&#xff0c;數字孿生等領域&#xff0c;提供超高精度的仿真模擬。 申請試用? 目前我們的Catalyst FX 還處于內部申請測試階段&#xff0c;請發送郵件至 alphacoremthre…

鴻蒙OSUniApp 實現的日期選擇器與時間選擇器組件#三方框架 #Uniapp

UniApp 實現的日期選擇器與時間選擇器組件 在移動應用開發中&#xff0c;日期選擇器和時間選擇器是表單、預約、日程、打卡等場景中不可或缺的基礎組件。一個好用的日期/時間選擇器不僅能提升用戶體驗&#xff0c;還能有效減少輸入錯誤。隨著 HarmonyOS&#xff08;鴻蒙&#…