我猜中文博客也有介绍的, 但我没看过中文的. 我来说说我的看法.
这里有一篇好文章. 概述说来: python和java一样, 也是先产生字节码的, 然后在虚拟机上执行. 但之所以我们感觉不到, 是因为这些编译是隐式的, 不像java需要先执行javac编译.
那为什么python可以交互式地执行一条语句? 难道此时它就不编译了?
不, 它也是会编译的, 哪怕只是一句, 只是我们感觉不到.
为什么java和c这些不可以交互式地执行?
不, 它们也可以, 只是我们没用到.. (我猜测一个例子就是c有jupyter kernel, 我因为担心配环境麻烦就没弄).
既然会编译, 字节码文件在哪里? 我怎么没看到?
参考这篇文章. 如果是执行这个脚本, 比如python test.py, 那么是不会保存编译结果的. 但如果是import, 那么会创建的.pyc的.
在这个链接中这篇文章也有介绍如何不通过import就获得.pyc文件. 但是我目前并不关心所以就不说了.