如果我们直接运行一个Python文件,那么Python在执行完后就把这个字节码文件删除掉了,因为Python认为复用性不高。
但是如果是一个模块文件,那么Python会存起来,我们来做个实验。
a.py
import b
b.py
def f(a=1): print(a)
当我们运行只有唯一一条语句的a.py时,Python会创立一个__pycache__的文件夹,其中就包括了b.cpython-34.pyc文件,这个就是b.py的字节码文件,如果用open函数打开来看看,就会看到下面的二进制文件,如果用普通方式打开,那么会提示编码错误。
>>> open('__pycache__/b.cpython-34.pyc','rb').read() b'\xee\x0c\r\n0%\xd8U\x19\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00@\x00\x00\x00s\x13\x00\x00\x00d\x00\x00d\x01\x00d\x02\x00\x84\x01\x00Z\x00\x00d\x03\x00S)\x04\xe9\x01\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00C\x00\x00\x00s\x0e\x00\x00\x00t\x00\x00|\x00\x00\x83\x01\x00\x01d\x00\x00S)\x01N)\x01\xda\x05print)\x01\xda\x01a\xa9\x00r\x04\x00\x00\x00\xfa\x13/home/aaa/proj/b.py\xda\x01f\x01\x00\x00\x00s\x02\x00\x00\x00\x00\x01r\x06\x00\x00\x00N)\x01r\x06\x00\x00\x00r\x04\x00\x00\x00r\x04\x00\x00\x00r\x04\x00\x00\x00r\x05\x00\x00\x00\xda\x08\x01\x00\x00\x00s\x00\x00\x00\x00'解释器逐个接