Python的单一、简洁的描述';内存模型/执行环境?

Python的单一、简洁的描述';内存模型/执行环境?,python,memory,memory-management,Python,Memory,Memory Management,当我学习C/C++时,我不仅学习了语言的语法和语言结构的语义,还学习了计算机如何执行程序。我学到了一些东西,比如: 所有局部变量都在一个堆栈框架中声明,该框架是分配的 每次调用函数时。这些框架布置在地板上 一个接一个地调用堆栈,当 函数返回,从而快速有效地“销毁”本地 该函数的变量 这反过来又帮助我理解了为什么获取局部变量的地址并将其返回给调用函数是个坏主意。换句话说,理解C/C++的内存模型和代码执行的环境有助于加深对如何编写正确程序的理解 另一个例子:malloc/newallocate对象

当我学习C/C++时,我不仅学习了语言的语法和语言结构的语义,还学习了计算机如何执行程序。我学到了一些东西,比如:

所有局部变量都在一个堆栈框架中声明,该框架是分配的 每次调用函数时。这些框架布置在地板上 一个接一个地调用堆栈,当 函数返回,从而快速有效地“销毁”本地 该函数的变量

这反过来又帮助我理解了为什么获取局部变量的地址并将其返回给调用函数是个坏主意。换句话说,理解C/C++的内存模型和代码执行的环境有助于加深对如何编写正确程序的理解

另一个例子:malloc/newallocate对象位于“heap”(而不是堆栈)中,这两个例子都解释了为什么它们存在于分配它们的函数的末尾之外。此外,知道这些函数/关键字返回对象所在的内存地址有助于我理解链表之类的东西是如何工作的。(以及如何确定我是否需要另一个
*
->

因此,现在我正在学习Python,我想对Python程序如何管理其内存和执行环境进行一个简明、清晰、彻底的解释

网上搜索并不是特别有成效——我可能使用了错误的搜索词,但总体来说似乎很少

我浏览了一遍,发现它是一个非常好的语法和语义资源(“如果你键入X,那么Y就会出现”),但它并没有真正描述计算机在“幕后”做什么

我在这里找到了几篇关于堆栈溢出的文章(比如,和),但这些文章似乎都关注于特定的情况

有人知道有什么资源可以解释Python在幕后的所作所为吗?

编辑:我从StackOverflow得到反馈,这个问题可能会 复制品。询问“一个.PY文件是如何获取的?” 编译(字节码)然后由VM执行?我在问什么 这里是“有没有一个页面解释Python如何放置变量, 对象、函数等存储在内存中,并解释如何使用它们 要实际运行Python程序(子问题:这是否合适 解决重复问题的方法是什么?会是什么 最好把这个放在评论里?)


有了python,您想要知道的是,为了能够高效地使用该语言,在引擎盖下发生了什么,这与C/C++完全不同,因为它是一个完全不同的语言环境。您想要了解的并不是内存中的细节,而是。

python实际上是用C语言编写的,因此您可以获取语言本身的源代码,并通读它,如果这有助于您理解它的工作原理的话。您也可能会发现有帮助。有什么建议吗?你在找这样的东西吗?您可以使用
id
内置获取有关对象内存位置的信息,但无法通过其id直接访问对象,相反,解释器会跟踪特定对象存在多少引用,以及当没有更多引用时,该对象会被垃圾收集,这会调用其
\uuu del\uuuu
方法来清理其资源,例如关闭打开的io的文件。首先从中读取@Ilja链接的FAQ和Python数据模型Paul Evans的答案。虽然这是一个仅链接的答案,并没有真正回答最初的问题,但我完全同意理解数据模型比理解内存管理更能帮助python。