我想知道是否有关于python对象ID的东西可以阻止它们永远等于零?我问是因为我使用零作为代码中特殊情况的替身。
来自文档
CPython 实现细节:这是内存中对象的地址。
0
是无效的内存位置。因此,C 中的任何对象都不会具有此内存位置,CPython 实现中的任何对象都不会具有零id
。
不确定其他python实现
返回对象的"标识"。这是一个整数(或长整数),保证此对象在其生存期内是唯一且恒定的。具有非重叠生存期的两个对象可能具有相同的 id() 值。
没有什么说它不能为零(零是整数)。如果你依赖它不为零,那么你依赖于当前的实现细节,这并不聪明。
相反,您应该做的是使用例如None
来指示它不是对象的id
。
这不是我想要的那么强大的答案,但是在python 2.7.5上做帮助(id)
id(...) id(对象) -> 整数
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 的对象,那么在那里应该是安全的。
如果你想要一个不同于其他任何对象的对象,你可以创建一个:
special = object()
只要不删除它,special
在程序运行时将是唯一的。这可能会达到您检查id()
为零的相同目的。