python - 为什么 id( )'s result on IronPython equal to id()' s 在 Python 上没有结果?

标签 python ironpython

我真的很困惑 IronPython 上 id() 函数的行为与 Python 不同。让我向您展示以下代码,

在 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() 函数返回一个唯一标识对象的数字。您可以使用它来查看两个名称是否绑定(bind)到同一个对象。您无法使用此值来查看两个对象在任何意义上是否“相等”。

关于python - 为什么 id( )'s result on IronPython equal to id()' s 在 Python 上没有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7751132/

相关文章:

python - 使用 iron python 脚本在文本文件中打印注册商标符号?

python - 在 django "login() missing 1 required positional argument: ' 用户中出现此错误“”

python - 如何验证表单中的电子邮件地址域?

c# - IronPython 调用 TryGetMember 而不是 TryInvokeMember

ironpython - 如何在 PyCharm for IronPython 解释器中控制 "Updating skeletons"后台任务?

python - 当 XPath 验证器返回正确结果时,为什么 XmlNode.SelectNodes 返回空列表?

c# - 无法使用 IronPython 导入用 C# 编写的模块

Python:UTF-8 十六进制到 UTF-16 十进制

java - Python 中两幅图像的比较

python - 在 __del__ 中关闭/处置对象真的可以吗?