晚上社区,
我正在学习Python,然后常常可以看到内存中对象的地址,例如:
... at 0x019F60F0
当我运行程序时,该python正在与我共享。如果有的话,将来对我有多大用处?还是仅仅是运行该程序的副作用,而人类却没有使用它?
答案 0 :(得分:1)
要回答您的问题,内存地址是否有用,它们确实是有用的。我不是python开发人员,所以我不知道为什么会向您输出地址,但总的来说,它们可以以许多不同的方式使用。
对于初学者来说,它们在调试代码时会非常有帮助。如果您需要确切地知道代码中确切时间点的内存地址中的值,则可以设置一个断点,并根据所使用的IDE(例如Visual Studio 2017)来设置断点。内存地址中的值并将其与您期望的值进行比较。
另一个有用的事情是优化。在许多编程语言中,您可以引用已经保存该值的内存地址,而不是创建一个占用内存更多空间的新变量。在内存量有限的机器(例如嵌入式系统)或需要真正快速运行的程序中,从长远来看可以提高性能。
在最后一个示例中,我将讨论安全性。尽管我不是该主题的专家,但我确实知道,通过查看某些系统(例如服务器)中的内存部分,您可以查看自己是否受到了攻击。您可以通过查找损坏的内存模式来判断。我确定有很多攻击会破坏您的内存,但是我可以想到的是缓冲区溢出。 Buffer Overflow
答案 1 :(得分:1)
这只是所有类型从对象继承的默认 repr 。主要用途是用于调试并能够区分不同的对象,并且地址本身等效于CPython中调用hex(id(some_object))(尽管这是实现细节)。