是否有人在讨论是否应该编译或解释 Python 代码?这个问题也可以换一种说法:Python是编译语言还是解释语言?回答这个问题
在此之前,让我们弄清楚什么是编译语言,什么是解释语言。
所谓编译执行是指源代码经过编译器编译处理后生成目标机器码,即机器可以直接运行的二进制代码,下次不需要重新编译跑。但它
它是针对特定CPU系统的,而这些目标代码只能在特定平台上执行。如果程序需要在另一个 CPU 上运行,则必须重新编译代码。
它不可移植,但执行速度很快。 C、C++等语言都是编译语言。
解释语言在代码运行过程中逐行翻译成目标机器代码。下次执行时,还是需要逐行解释。我们可以简单的认为Java和Python都是解释的
语言。
编译型相当于厨师直接准备一桌菜,顾客直接上门吃饭,而口译型就像吃火锅,厨师洗碗,顾客自己做饭吃,这提高了效率
都说解释型语言自然不如编译型语言。当然,也不是绝对的。 JIT的效率非常高。
以上是编译语言和解释语言的一个简单粗暴的区分,但是Python(这里主要是CPython)并不是严格意义上的解释语言,因为
在运行 Python 代码之前,它会被编译(翻译)成中间代码,每个 .py 文件都会被转换成一个 .pyc 文件。 .pyc 是一个字节码文件,它独立于平台。
相关的中间代码无论放在Windows还是Linux平台都可以执行,虚拟机在运行时会将字节码逐行翻译成目标代码。
当我们安装Python的时候,会有一个Python.exe文件,就是Python解释器。你编写的每一行 Python 代码都由它执行。解释器由
由编译器和虚拟机组成。编译器负责将源代码转换成字节码文件,虚拟机负责执行字节码。因此,解释型语言实际上是经过编译的。
但是这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后通过虚拟机逐行解释和执行字节码。
总结
Python代码会先编写一个字节码文件,然后虚拟机会逐行解释,将每一行字节码代码翻译成目标指令供CPU执行。
推荐学习《
》。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
内容反馈