获取第一个 id 的值很明显。如何在 函数中获取第二个ID 的值是 ?
id(False)
=> 140399586313184
id(id(False))
=> 140399542553456
id(False) is id(False)
=> False
Python文档:
operator.is_(a, b)
返回a是b。测试对象标识。
Operator.is_(a,b)执行函数 id(False)两次。 id(False)内存中的值不同。 ID运行时我想知道 B id(False)是id(False)
答案 0 :(得分:1)
is
不是比较整数(或大多数类型)的有效方法。 id(False) is id(False)
的两边都生成相同的整数值,但它们是两个不同的整数对象(因为该值超出了应用小整数缓存的范围)。 is
因此正确返回False。如果您使用==
比较了值,则结果为True。
答案 1 :(得分:1)
id (False) is id (False)
比较id()
函数返回的id 的引用。它不会比较False
的引用。
你可以在python中使用任何大整数获得类似的效果,而不仅仅是id。
在C实现的情况下,这些是大整数(内存地址),它们的实际值没有用,并且是特定于实现的。
具有相同值的两个整数是否具有相同的引用同样是特定于实现的,并且不能保证。 C实现做了一些优化,但只有" small"数字。见"is" operator behaves unexpectedly with integers