2024-09-30 01:32:46 发布
网友
下面是在另一个函数中定义函数的程序。在
1)当我们说python program.py时,python源代码的每一行都直接转换成在处理器上执行的机器指令集吗?在
python program.py
2)上图有GlobalFrame和LocalFrame以及Objects。在上面的程序中,FramesObjects和{}在运行时驻留在哪里?在python解释器的虚拟内存地址空间中是否有一个单独的内存空间给这个程序?在
Frames
Objects
“python源代码的每一行都直接转换成在处理器上执行的机器指令集吗?”在
不,Python代码(不一定是行代码)通常被转换成中间代码,然后被一些人称之为“虚拟机”的东西来解释(令人困惑的是,VM在其他上下文中的含义完全不同,但是,好吧)。CPython是最流行的实现(大家都认为它是“python”:-),它使用自己的字节码及其解释器。Jython使用Java字节码和JVM来运行它。等等。PyPy可能是最有趣的实现,它几乎可以生成任何类型的结果代码,包括机器代码,但它远不是一个逐行处理的过程!-)在
“框架对象和代码在运行时的位置”
在“堆”上,如CPython实现中的C编程语言中的malloc或等效定义(或Jython的Java等)。在
malloc
也就是说,每当生成一个新的PyObject(在CPython的内部结构中),就会发生一个malloc或等效对象,并且该对象永远通过指针(C语法中的PyObject*)引用。函数、框架、代码对象等等,几乎所有的东西都是一个对象在Python中没有特殊处理,“一切都是一流的”!-)在
PyObject
PyObject*
“python源代码的每一行都直接转换成在处理器上执行的机器指令集吗?”在
不,Python代码(不一定是行代码)通常被转换成中间代码,然后被一些人称之为“虚拟机”的东西来解释(令人困惑的是,VM在其他上下文中的含义完全不同,但是,好吧)。CPython是最流行的实现(大家都认为它是“python”:-),它使用自己的字节码及其解释器。Jython使用Java字节码和JVM来运行它。等等。PyPy可能是最有趣的实现,它几乎可以生成任何类型的结果代码,包括机器代码,但它远不是一个逐行处理的过程!-)在
“框架对象和代码在运行时的位置”
在“堆”上,如CPython实现中的C编程语言中的
malloc
或等效定义(或Jython的Java等)。在也就是说,每当生成一个新的
PyObject
(在CPython的内部结构中),就会发生一个malloc
或等效对象,并且该对象永远通过指针(C语法中的PyObject*
)引用。函数、框架、代码对象等等,几乎所有的东西都是一个对象在Python中没有特殊处理,“一切都是一流的”!-)在相关问题 更多 >
编程相关推荐