亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Python中獲取變量的內存位置

如何在Python中獲取變量的內存位置

FFIVE 2023-03-16 11:28:11
當我們看下面的代碼時,my_var = "Hello World"id(my_var)該語句id(my_var)返回字符串對象“Hello World”的地址/位置我想知道我們是否有任何命令,用它我可以獲得地址/位置my_var我試圖理解 Python 中的內存。例如,在 C 編程中,我可以通過以下方式獲取變量和指針的地址int var;int *var_ptr = &var;printf ("%d", var_ptr);  % Prints address of varprintf ("%d", &var_ptr); % Prints address of var_ptr
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

不能,但原因是如此根本,我認為無論如何都值得發布。在 C 語言中,一個指針可以指向任何變量,包括另一個指針。(另一種指針變量,即:你可以寫&p,但不能寫&(p+1)。)在 Python 中,每個變量都是一個指針,但每個指針都指向一個對象

不是對象的變量不能是指針的引用。然而,變量可以是對象的一部分o.foo,可以作為或訪問o[bar](其中 bar 可能是索引或字典鍵)。事實上,除局部變量外,每個變量都是這樣一個對象組件;作為推論,不可能從任何其他函數分配給局部變量。相比之下,C 通過傳遞&local給任何其他函數來定期執行此操作。(“任何其他函數”有一個例外:nonlocal可以分配變量,但嵌套函數中使用的每個局部變量都是通過隱式創建一個cell對象作為變量的基礎值并將變量的用法解釋為引用來實現的一個它的屬性?。?/strong>

C++ 容器很容易說明這種區別:它們通常提供operator[]返回一個引用(一個指針,像 Python 引用一樣,自動取消引用)到一個=可以應用的元素,而 Python 等價物是提供兩者__getitem__(返回一個參考)和(它一次__setitem__實現所有存儲到一個變量)。[]=

當然,在 CPython 的實現中,每個 Python 變量都是一個PyObject*變量,a PyObject**to one 可以用于內部目的,但那些總是臨時的,甚至在 Python 級別概念上都不存在。因此,對他們來說沒有等價物id。


查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號