欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 随机一道面试题2:Python编译执行顺序?

随机一道面试题2:Python编译执行顺序?

2026/3/8 6:09:37 来源:https://blog.csdn.net/wzx77/article/details/148810932  浏览:    关键词:随机一道面试题2:Python编译执行顺序?

执行脚本本身

直接运行的脚本本身不会生成 .pyc 文件,每次运行都重新编译源代码,编译生成的字节码仅存在于内存中,程序结束后字节码即被丢弃。
在这里插入图片描述
PS:橙色路径显示字节码内存由操作系统统一回收,而非Python主动清理

导入模块:首次导入

当文件作为模块被导入时,首次导入模块对象,会先创建一个空模块对象加入sys.modules缓存,并执行模块加载

  • 语法校验通过导入成功编译为字节码.pyc 文件),保存到 __pycache__ 目录,后续再导入直接从此表读取(无需重新编译或执行,加快运行速度)。
  • 导入失败,所有中间状态被回滚,从sys.modules删除缓存不生成.pyc文件
  • .py 源文件被修改(根据时间戳判断)且该文件缓存过,源文件会重新编译并更新 .pyc 文件

导入模块:重复导入

重复导入时,直接从 sys.modules 读取模块对象,不执行模块内的代码。(比如:导入的模块顶层代码中包含print语句时,只有首次导入或者源文件更新时才会被执行,后续不会执行)

在这里插入图片描述

缓存文件生命周期

曾经导入成功的模块后续导入失败时,.pyc 文件不会被自动删除
在这里插入图片描述

特殊运行方式:交互式环境

脚本运行是整个文件作为编译单元,交互式环境是单行作为编译单元,也就是解析一行代码为字节码后直接解释运行,再解析下一行代码。即:运行N行 = 每一行(解析+解释+运行) * N次

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词