流程图
当内部无调用文件
# a.py
print('xxx')
则将直接返回结果
当内部有调用文件
# a.py (new)
import b
b.run() # 调用b文件
print('xxx')
# b.py
def run():
print('b.by go')
run()
则返回的结果为:
并生成了编译的Python文件:
当内部有调用文件但已进行编译无源文件只有编译文件任能成功
时间不相同(即对文件进行了修改的情况)
执行b.pyc文件
对b.py进行修改
# b.py (new)
def run():
print('b.by go222')
run()
再次执行a.py:
发现进行了变化,调用的是新的b.py
那么再执行下b.pyc:
可以发现它进行了变化
总结
- Python是先编译成字节码,然后在解释执行的一门语言
- .pyc文件的主要作用是持久化编译结果,提升下次的执行效率(会不会持久根据的是import机制;也可以通过命令手动编译&持久化:python -m py_compile a.py,然后会生成pyc文件,此文件不能被查看可以起到保护的作用)
- .py和.pyc文件都可以交给解释器直接处理