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

时间:2016-04-01 16:32:55

标签: python memory memory-management

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

  

所有局部变量都在堆栈帧中声明,并且已分配   每次调用该函数。这些框架布置在   一个接一个地拨打电话,他们已经解开了#39;当。。。的时候   功能返回,从而快速有效地摧毁'本地的   该函数的变量

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

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

所以现在我正在学习Python和我正在寻找关于Python程序如何管理其内存和执行环境的简明,清晰但彻底的解释

在线搜索并没有特别富有成效 - 我可能会使用错误的搜索字词,但一般情况下似乎很少。

我查看了https://docs.python.org/并发现它是语法和语义的优秀资源("如果你键入X,那么Y会发生"),但它没有&# 39;真正描述计算机正在做什么'引擎盖下。

我在Stack Overflow上找到了几个帖子(例如thisthisthis),但这些帖子似乎都集中在特定情况上。

是否有人知道实际上解释了Python在幕后做什么的资源'

  编辑:我从StackOverflow得到了这个问题的反馈意见   是重复的。 The other question询问.PY文件是如何得到的   编译(到字节码),然后由VM执行?'我在问什么   这里有一个页面解释了Python如何建立变量,   内存中的对象,函数等,并解释了如何使用它们   实际上运行Python程序' (子问题:这是否合适   解决重复问题的方法?可不可能是   最好把它放在评论中?)

1 个答案:

答案 0 :(得分:1)

使用python你想知道什么是直接在幕后发生的事情,以便能够有效地使用该语言与C / C ++完全不同,因为它是一个完全不同的语言环境。你想让自己想要的不仅仅是记忆中存在的细节,而是Python's Data Model