我试图了解 Python 是如何工作的(因为我一直在使用它!)。据我了解,当您运行 python script.py 之类的东西时,脚本会转换为字节码,然后解释器/VM/CPython(实际上只是一个 C 程序)读取 python 字节码并相应地执行程序。
这个字节码是如何读入的呢?是不是和C语言读取文本文件的方式类似?我不确定Python代码是如何转换为机器代码的。 Python 解释器(CLI 中的 python 命令)实际上只是一个已转换为机器代码的预编译 C 程序,然后只是通过该程序放入 python 字节码文件吗?换句话说,我的Python程序从来没有真正转换成机器代码吗? python解释器是否已经在机器代码中,所以我的脚本永远不必是?
是的,你的理解是正确的。 CPython 解释器内部基本上(非常基本上)有一个巨大的 switch 语句,它表示“如果当前操作码是某某,则执行此操作”。
http://hg.python.org/cpython/file/3.3/Python/ceval.c#l790 http://hg.python.org/cpython/file/3.3/Python/ceval.c#l790
其他实现(例如 Pypy)具有 JIT 编译,即它们将 Python 即时翻译为机器代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)