Python:id()总是非零吗?

时间:2016-02-08 14:44:28

标签: python

我想知道是否有任何关于python对象ID会阻止它们等于零?我问,因为我在代码中使用零作为特殊情况的替身。

4 个答案:

答案 0 :(得分:5)

来自docs

  

CPython实现细节:这是内存中对象的地址。

SUMX( CALCULATETABLE( VALUES(MyTable[OrderNumber]), MyTable[ProductCode] = "A" ), IF(CALCULATE(COUNTROWS(MyTable),MyTable[ProductCode] = "B") > 0,1) ) 是无效的内存位置。因此,C中的任何对象都不会拥有此内存位置,并且CPython实现中的任何对象都不会有0为零。

不确定其他python实现

答案 1 :(得分:4)

  

返回对象的“标识”。这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的。具有非重叠生存期的两个对象可能具有相同的id()值。

没有任何东西可以说它不能为零(零是一个整数)。如果您依赖它不是零,那么您依赖于当前不聪明的实现细节。

您应该做的是使用例如None来表明它不是对象的id

答案 2 :(得分:0)

这并不像我想的那样强有力,但在python 2.7.5上做帮助(id)

  

ID(...)       id(object) - >整数

Return the identity of an object.  This is guaranteed to be unique among
simultaneously existing objects.  (Hint: it's the object's memory address.)

假设你没有一个指向NULL的对象,你应该在那里安全。

答案 3 :(得分:0)

如果您想要一个与其他对象不同的对象,您可以创建一个:

special = object()

只要您不删除它,special在您的程序运行时将是唯一的。这可能与您打算检查id()为零相同。