Python中id()的使用
id()
这个函数在实际编程中有什么用呢?我一直以为这个函数只是为了学术研究而存在的。在编程中我到底会在哪里用到它呢?
我已经用Python编写应用程序一段时间了,但我从来没有遇到过使用id()
的“需求”。有没有人能给我讲讲它在现实中的用法?
5 个回答
1
在任何可能需要用到 id()
的地方,其实都可以用 is
或者弱引用(weakref)来代替。所以在实际的代码中,没必要使用 id()
。
2
我在写临时文件到磁盘时,经常使用id()这个函数。它是一种非常轻便的方法,可以得到一个伪随机数。
假设在处理数据时,我得到了些中间结果,想要保存起来以备后用。我只需用相关对象的id来创建一个文件名。
fileName = "temp_results_" + str(id(self)).
虽然还有很多其他方法可以创建独特的文件名,但这是我最喜欢的方法。在CPython中,id就是对象在内存中的地址。因此,如果创建了多个对象,我可以保证不会出现文件名冲突。这一切只需要一次地址查找的成本。而我知道的其他获取唯一字符串的方法要复杂得多。
举个具体的例子,比如一个文字处理应用,每个打开的文档都是一个对象。我可以定期将进度保存到磁盘,即使同时打开多个文件,也能使用这种命名规则。
6
这段话的意思是,它可以用来创建一个关于对象的元数据字典:
举个例子:
someobj = int(1)
somemetadata = "The type is an int"
data = {id(someobj):somemetadata}
现在如果我在其他地方遇到这个对象,我可以快速查找这个对象的元数据是否存在,时间复杂度是 O(1)
(也就是说,不需要像之前那样一个一个去检查 is
)。