Python:id() 将始终为非零

  • 本文关键字:id Python python
  • 更新时间 :
  • 英文 :


我想知道是否有关于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()为零的相同目的。

最新更新