有人能解釋爲什麼我的變量x返回到它的這些步驟後,前ID:爲什麼Python中的變量在來回轉換之後返回到原ID?
>>> x = 10
>>> id(x)
497834400
>>> x = str(x)
>>> id(x)
48840576
>>> x = int(x)
>>> id(x)
497834400
有人能解釋爲什麼我的變量x返回到它的這些步驟後,前ID:爲什麼Python中的變量在來回轉換之後返回到原ID?
>>> x = 10
>>> id(x)
497834400
>>> x = str(x)
>>> id(x)
48840576
>>> x = int(x)
>>> id(x)
497834400
變量int數據類型爲壽命和x的生命週期中可用還沒有完成。 實際上,它通過將x轉換回int來指向x的int類型。
因爲10是python中所謂的小整數。 Python會將[-5,257)之間的小整數緩存在名爲「small_ints」的池中。所以[-5,257]中的整數實例都是在整個python中共享的,這就是id(10)總是返回相同地址的原因。
What is the number returned from the function id() ?
它是「這是保證其壽命期間該對象獨特和恆定的整數(或長整數)。」 (Python標準庫 - 內置函數)唯一編號。沒有更多,也沒有少。把它看作是Python對象的社會安全號碼或員工身份號碼。
Is it the same with memory addresses in C ?
從概念上講,是的,他們都保證在其一生中,在他們的宇宙獨一無二的。在Python的一個特定實現中,它實際上是相應C對象的內存地址。
x'的'轉換之前和之後的值是相同數量的10.這就是爲什麼它具有相同的ID。 – DyZ
@DYZ雖然對於對象通常不是真的,但對於在-5到256之間的整數,僅在CPython上纔是真實的 –
@ juanpa.arrivillaga我沒有推廣到_objects_,我只是提出了10的索賠。我同意你的其他評論。 – DyZ