如何获取变量的唯一识别号码或字符串

0 投票
2 回答
1069 浏览
提问于 2025-04-18 17:27

使用

a=7
print hex(id(a))

得到的结果是:

0x7f866b425e58

我打算把这个输出(转换成字符串)作为每个类对象的识别号码,我需要确保在程序运行时它是保持不变的。我还想知道第二个字符是否总是'x'(在mac、win和linux上)。如果我选择hex(id)是个错误,请告诉我有什么更好的选择。

2 个回答

-1

你可能想看看 hash(obj) https://docs.python.org/2/library/functions.html#hash

这个函数会返回对象的哈希值(如果这个对象有的话)。哈希值是整数,用来在查找字典时快速比较字典的键。相同的数字值会有相同的哈希值(即使它们的类型不同,比如 1 和 1.0)。

7

id() 函数可以保证在对象存在期间,它返回的标识符是稳定的,但如果对象被销毁,这个标识符可能会被重新使用。

当你使用 hex() 函数时,前面总会有 0x 这个前缀。你也可以使用 format(..., 'x') 来格式化成没有前缀的十六进制数字:

>>> a = 7 
>>> print format(id(a), 'x')
7f866b425e58

你可以考虑使用一个 itertools.count() 对象 来生成唯一的标识符,可能加上前缀,或者如果你需要和其他标识符区分开,可以把数字取反:

from itertools import count

id_counter = count()

每次需要一个新的标识符时,可以使用:

next(id_counter)

并将其作为属性存储在你的实例中。你可以通过给 count() 设置一个负步长来让计数器 倒数

id_counter = count(-1, -1)

演示:

>>> from itertools import count
>>> id_counter = count(-1, -1)
>>> next(id_counter)
-1
>>> next(id_counter)
-2

撰写回答