这只是我在阅读有关解释和编译语言时的一个奇迹。
Ruby无疑是一种解释型语言,因为源代码在执行时由解释器处理。
相反,C是一种编译语言,因为必须先根据机器编译源代码,然后再执行。这样可以更快地执行。
现在开始使用Python:
- 导入时,Python代码(somefile.py)在同一目录中创建文件(somefile.pyc)。让我们说导入是在python shell或django模块中完成的。导入后,我稍稍更改了代码,然后再次执行导入的功能,以发现它仍在运行旧代码。这表明* .pyc文件是类似于编译C文件后创建的可执行文件的已编译python文件,尽管我无法直接执行* .pyc文件。
- 当直接执行python文件(somefile.py)(./somefile.py或python somefile.py)时,不会创建.pyc文件,并且按指示解释行为的方式执行代码。
这些建议每次在新过程中导入python代码时都会编译python代码,以创建.pyc,而直接执行时会对其进行解释。
那么我应该将其视为哪种类型的语言?解释还是编译?以及它的效率与解释和编译语言相比如何?
根据Wiki的“ 解释语言”页面,它被列为编译为虚拟机代码的语言,这是什么意思?
RUN
。就像您有一个编译器执行词法分析步骤,然后输出每次运行程序时都必须重新解析的令牌流一样。根本不像说的那样现代的字节码编译javac
,它包括词法分析,解析和优化。