如何获取变量唯一标识号或字符串

时间:2014-08-15 20:28:02

标签: python

使用

a=7
print hex(id(a))

回来:

0x7f866b425e58

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

2 个答案:

答案 0 :(得分:7)

id()保证在对象的生命周期内保持稳定,如果对象被销毁,则可以重用标识符。

使用0x时,hex()前缀始终存在。您也可以使用format(..., 'x')格式化为十六进制数字,而无需前缀:

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

您最好只使用itertools.count() object来制作您的唯一ID,可能带有前缀,或者如果您需要将这些数字与其他数字区分开来,则取消数字:

from itertools import count

id_counter = count()

每次需要新ID时,请使用:

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

答案 1 :(得分:-1)

您可能希望查看hash(obj)https://docs.python.org/2/library/functions.html#hash

  

返回对象的哈希值(如果有)。哈希值是   整数。它们用于在a期间快速比较字典键   字典查找。比较相等的数值具有相同的值   哈希值(即使它们的类型不同,就像1的情况一样)   和1.0)。