Python 查找标识符的值

Python 查找标识符的值,python,Python,获取第一个id的值是显而易见的。如何在函数is中获取第二个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)内存中的值不同。我想知道B当id运行时

获取第一个id的值是显而易见的。如何在函数is中获取第二个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)内存中的值不同。我想知道B当id运行时id(False)is id(False)

is
不是比较整数(或大多数类型)的有效方法。
id(False)的两侧都是id(False)
生成相同的整数值,但它们是两个不同的整数对象(因为该值超出了小整数缓存应用的范围)<代码>为,因此正确返回False。如果您使用
==
比较了这些值,则结果应该是真的。

id(False)是id(False)
比较由
id()
函数返回的id的引用。它不比较
False
的引用

python中的任何大整数都可以获得类似的效果,而不仅仅是id

在C实现的情况下,这些是大整数(内存地址),它们的实际值没有用处,是特定于实现的


具有相同值的两个整数是否具有相同的引用同样是特定于实现的,并且不能保证。C实现进行了一些优化,但只对“小”数进行了优化。看你的问题的写作方式,很难理解你想要什么。试着更清楚地解释一下,以这种方式使用
is
是没有意义的。你是说
==
而不是
?@cdarke不,我是说是。Id(False)==Id(False)具有相同的值。我对is执行期间id的值感兴趣。因为内存中的值是不同的。但这并不比较id的值,而是比较id的引用,而不是它们的值。