簡體   English   中英

Python id(),帶有對象的變量引用

[英]Python id() with variable reference to an object

我對python比較陌生,想解決我和某人之間的糾紛。 假設您接受了考試或測驗,並出現以下問題:

問題32:在以下python [IDLE]示例中:

>>> x=52
>>> x 
52
>>> id(x)
505404728

505404728是:

  • a)x的內容
  • b)x的ID
  • c)ID為52
  • d)(b)和(c)
  • e)以上都不是

請提供解釋。 感謝大家!

id返回一個整數,該整數guaranteed to be unique and constant for this object during its lifetime

>>> x = 52
>>> y = 52
>>> id(x)
12694616
>>> id(y)
12694616

不同的python實現(Cpython,Jython等)以不同的方式實現 - 例如cpython返回對象的內存地址。

更新:實際上,Christian Dean在評論中的答案更准確:答案是呃......“c”? 標簽x是否有id,或者它是指向值52的指針嗎?

來自文檔的有用知識摘錄:

當前實現為-5256之間的所有整數保留一個整數對象數組,當您在該范圍內創建一個int時,實際上只返回對現有對象的引用。

所以,回顧一下:

In [200]: x = 52

In [201]: id(x)
Out[201]: 4297372320

In [202]: id(52)
Out[202]: 4297372320

x指向52 52存儲在某處的存儲器中。 id返回一個“數字”,保證在其生命周期內對象是唯一的。

簡而言之,答案是d ,因為x52具有相同的參考。 你可以爭辯說 ,這可能是c取決於你如何解釋這個問題雖然...。

我會說正確答案是c id(x)返回x引用的對象的ID, 52 所以c是正確的。 這就是為什么我沒有選擇其他人:

  • a :選項a明顯不正確。 我們甚至不必尋找明確的答案。 我們可以清楚地看到c值是52 ,而不是505409528 此外, x不“保留”任何東西。 它是指對象52的標簽。
  • b :選項b雖然更好,但仍然不正確。 變量x自身沒有ID。 它只是一個標簽。 52 - 它標記或引用的對象 - 確實有一個ID。
  • d:我沒有選擇這個,因為我沒有選擇b
  • e:該選項也不正確。 正如我上面所說,我相信正確答案是c

將來,為了能夠完全理解和回答諸如您發布的問題之類的問題,您需要牢固了解Python中的變量。 事實資源是Ned Batchelder的一篇文章,名為Facts和關於Python名稱和價值觀的神話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM