python学习笔记03:了解.pyc:了解python执行程序的过程

python学习笔记04:了解.pyc:了解python执行程序的过程

例:自写一个可执行的.py文件,作为一个被调用的模块,放到python存放第三方库资源的site-packages下,在程序导入该模块后,运行时按照先在本文件所在目录下找该模块,找不到,就到全局变量中找,直至在site-packages中找到并调用。

  • 编译型语言:在程序执行之前,通过编译器,对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,直接执行。速度快,如C语言。

  • 解释型语言:没有这个编译过程,是程序执行时,通过解释器,对程序进行逐行解释,即边执行边编译。如Ruby。

java的划分不纯粹,首先是通过编译器编译成字节码文件,然后运行时通过解释器解释成机器文件。所以,java是一种先编译后解释的语言。即在程序真正执行之前,先会进行一次预编译。预编译指的是把能编译的部分先编译了一遍。

python在执行python hello.py时,其实是激活了python的“解释器”,告诉解释器,你要开始工作了。可是在“解释”之前,其实执行的第一项工作和java一样,是编译。所以严格意义上来说,python也是一种先编译后解释的语言。

python的运行过程:
先了解PyCodeObject和pyc文件。
PyCodeObject是python编译器真正编译成的结果。
pyc文件是以文件形式存下来的编译的结果。存在于硬盘里,python资源路径下的__pycache__文件中。

python开始运行程序----[生成编译结果—位于内存中的PyCodeObject]-----python运行结束(python解释器将PyCodeObject写回到.pyc文件)

python第二次运行----硬盘中找.pyc文件—找到:直接载入;没找到:重复上一过程,在程序中编译

所以可以说,pyc文件其实是PyCodeObject的一种持久化保存方式。

修改执行文件 —原同名的.pyc文件与新的不同:
python执行前检测一次.pyc文件 ---- 判断同名的.pyc文件的更新时间 ---- 执行最新的.pyc文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值