Python比较灵活,一方面它规定了自己的字节码,但又不要求程序必须以字节码文件(pyc)来发布;它完全支持源代码的直接执行。
本质上,在Python虚拟机内部,源代码也是先编译成字节码然后再执行的,也就是说,Python的编译器是Python虚拟机的一部分。它不像Java虚拟机,Javac用于编译,和执行是相分离的。可以回忆一下Python中的eval 功能,eval就是调用了Python内置的编译器来对字符串进行编译的。
另外,Jython是-一种Java实现的Python语言,它的原理与CPython大不相同。它放弃了Python的原生字节码,直接将py源代码文件翻译成了由Java字节码组成的class文件。而class文件是可以直接在Java虚拟机上执行的,这样一来Pyhon代码就可以自由地使用各种强大的Java类库。通过编译Jyhon实现了Pyhon 与Java的无缝衔接。
本质上,在Python虚拟机内部,源代码也是先编译成字节码然后再执行的,也就是说,Python的编译器是Python虚拟机的一部分。它不像Java虚拟机,Javac用于编译,和执行是相分离的。可以回忆一下Python中的eval 功能,eval就是调用了Python内置的编译器来对字符串进行编译的。
另外,Jython是-一种Java实现的Python语言,它的原理与CPython大不相同。它放弃了Python的原生字节码,直接将py源代码文件翻译成了由Java字节码组成的class文件。而class文件是可以直接在Java虚拟机上执行的,这样一来Pyhon代码就可以自由地使用各种强大的Java类库。通过编译Jyhon实现了Pyhon 与Java的无缝衔接。