标签:bubuko TE 解释型 info 没有 python 图片 也会 修改
Python是一种解释型语言,在执行Python的时,解释器将源代码source code翻译成字节码byte code,然后byte code交给Python虚拟机PVM去执行,整个流程如下图所示:
byte code
1 字节码翻译
Python解释器并不是每次都会将源代码source code翻译成字节码byte code。比如,如果你没有对源代码做任何修改,那么,当你执行python程序时,Python解释器直接将字节码交给Python虚拟机执行,而跳过了源代码翻译成字节码的步骤。在下面两种情形下,Python解释器会重新翻译源代码为字节码:
1 源代码被改变。Python解释器会检查源代码与字节码的时戳,如果发现源代码被修改,那么就会重新翻译。
2 Python版本改变。如果Python解释器发现包含在字节码里的版本信息与当前Python版本不匹配,也会重新翻译。对于<Python3.2之前的Python实现,版本信息包含在字节码文件中的一个"magic‘’版本号里面,对于>=Python3.2的Python实现,字节码文件名就包含了版本信息
2 字节码的存储位置
Python字节码后缀"pyc"表示complied.py文件。对于<Python3.2的实现,字节码文件与源文件放在同一个目录,对于>=Python3.2的实现,字节码文件单独放在一个__pycache__文件夹下,而__pycache__文件夹与源文件在同一个目录,并且存放在__pycache__下的字节码文件都包含Python的版本信息,比如script-33.pyc,表示当前字节码是由Python3.3的实现翻译而来。
PVM
Python虚拟机不需要单独安装,它是Python实现的一部分,本质上就是一个大的循环,一句一句执行着字节码里面的代码
标签:bubuko TE 解释型 info 没有 python 图片 也会 修改
原文地址:https://www.cnblogs.com/chaoguo1234/p/9125581.html