簡體   English   中英

為什么id()在IronPython上的結果不等於id()在Python上的結果?

[英]Why doesn't id()'s result on IronPython equal to id()'s result on Python?

我真的很混淆IronPython上與Python不同的id()函數行為。 讓我告訴你以下代碼,

在IronPython中:

>> s = "hello"
>> a = len(s)
>> id(a)
44
>> a = len(s)
>> id(a)
45

正如您所看到的,id()的結果在每次調用時都會更改。 但是,在Python中,不能更改。

在Python中:

>> s = "hello"
>> a = len(s)
>> id(a)
2633845
>> a = len(s)
>> id(a)
2633845

我知道id()函數返回其單個參數的對象標識號(ID)。 為什么兩個python解釋器給我一個不同的結果?

CPython有一個常量小整數的緩存,可以在需要時使用。 該整數池是一種優化,可以提高性能,因為不需要根據需要為每個小整數分配新對象。 顯然,IronPython以不同的方式處理這個問題。

也就是說, id()函數返回唯一標識對象的數字。 您可以使用它來查看兩個名稱是否綁定到同一個對象。 您無法使用此值來查看兩個對象在任何意義上是否“相等”。

http://docs.python.org/library/functions.html#id

返回對象的“身份”。 這是一個整數(或長整數),在該對象的生存期內,此整數保證是唯一且恆定的。 具有不重疊生存期的兩個對象可能具有相同的id()值。

Python實現細節:這是內存中對象的地址。

您為什么認為id是恆定的?

暫無
暫無

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

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