我想知道是否有任何关于python对象ID会阻止它们等于零?我问,因为我在代码中使用零作为特殊情况的替身。
答案 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()
为零相同。