Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中按左值绑定时刻的内存分配类型_Python_Python 2.7_Memory_Lvalue - Fatal编程技术网

Python中按左值绑定时刻的内存分配类型

Python中按左值绑定时刻的内存分配类型,python,python-2.7,memory,lvalue,Python,Python 2.7,Memory,Lvalue,我的家庭作业有点麻烦。我做了很多研究,但都被卡住了。任务如下: 开发并实施一个示例,在该示例中,您将展示不同的 指定语言实现的变量类型,根据它们的 通过与左值绑定的时刻进行分类 我研究了不同的类型,得出以下结论: 根据与左值绑定的时刻,变量可以分为4种类型 静态:在运行前分配内存,变量在整个程序执行期间最后一次在内存中 自动(或半静态):在加载变量的作用域时分配内存,在离开作用域时释放内存 动态:仅在执行期间需要时才分配内存。(我认为这意味着,例如 函数调用,当实际变量声明为 运行)。在需要时

我的家庭作业有点麻烦。我做了很多研究,但都被卡住了。任务如下:

开发并实施一个示例,在该示例中,您将展示不同的 指定语言实现的变量类型,根据它们的 通过与左值绑定的时刻进行分类

我研究了不同的类型,得出以下结论:

根据与左值绑定的时刻,变量可以分为4种类型

  • 静态:在运行前分配内存,变量在整个程序执行期间最后一次在内存中
  • 自动(或半静态):在加载变量的作用域时分配内存,在离开作用域时释放内存
  • 动态:仅在执行期间需要时才分配内存。(我认为这意味着,例如 函数调用,当实际变量声明为 运行)。在需要时释放内存。指针就是我举过的一个例子 找到了这个
  • 半动态:我还没有找到一个明确的定义,但我看到的一个例子是数组,它的大小在运行时之前是未知的
我在Pascal中有每种语言的示例,但是我为这个任务指定的语言是Python。我找不到Python使用的分配类型。我见过Python使用动态分配,但我不确定这是真正的动态分配(由垃圾收集器管理的手动释放)还是自动分配(因为程序员不必手动执行)。我还不确定类属性、全局变量和常量是静态的还是与其他变量(自动/动态)的工作方式相同


对于python所使用的内存类型的任何见解,甚至对我对每种类型的定义的回顾,都将不胜感激。如前所述,我已经对此进行了研究,但我发现(对我而言)或编程特定问题(即如何在Python中手动分配/释放内存)并不清楚,也没有发现上述Python使用的类型。

我做了一些研究,但找不到任何关于Python中静态内存分配的参考,或者更准确地说是CPython:似乎内存管理的大多数方面都不是由Python语言指定的,而是由它的实现来决定的

我相信CPython的所有内存管理都是“动态的”,因为它的运行时管理私有堆(无论何时需要)来为对象分配内存(正如我在前面的评论中所说,几乎所有东西都是Python中的对象!)

虽然与您的问题没有直接关系,但可以在CPython中“键入”分配,例如使用

现在,皮皮是另一种野兽。它用作一个运行时解释器,它似乎在内存分配方面做了一些更有趣的事情,比如分析如何分配内存


现在我不确定这是否属于自动分配,但这可能是您报告中要讨论的问题

好问题!在没有认真考虑这一点的情况下,我只能确认您已经说过的话:Python中的大部分内存分配是动态的。甚至类(在Python中只是对象)也是动态创建/分配的。我将尝试思考一些边缘案例(模块、迭代变量等),并在稍后发布答案。感谢您花时间研究此问题!我一定会在我的报告中提到:)我也会和老师核实一下,如果她告诉我任何新情况,我会让你知道:)