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实现,字节码文件名就包含了版本信息

2 字节码的存储位置

Python字节码后缀"pyc"表示complied.py文件。对于=Python3.2的实现,字节码文件单独放在一个__pycache__文件夹下,而__pycache__文件夹与源文件在同一个目录,并且存放在__pycache__下的字节码文件都包含Python的版本信息,比如script-33.pyc,表示当前字节码是由Python3.3的实现翻译而来。

PVM

Python虚拟机不需要单独安装,它是Python实现的一部分,本质上就是一个大的循环,一句一句执行着字节码里面的代码

python如何运行源文件_Python如何运行相关推荐

  1. python常用代码助手_Python在线运行代码助手

    Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码.原理如下: 在网页输入代码: 点击Run按钮,代码被发送到本机正在运行的Python代码运行 ...

  2. 怎么用python运行代码_python怎么运行代码程序

    一.使用Python的解释器: 1.安装python一般都会有一个交互式解释器,我们可以在这里直接写入运行 2.但如果我们将其关闭,刚才写的代码就会丢失.此时,我们新建一个文本文档,写入print ' ...

  3. python项目运行环境_python项目运行环境安装小结

    安装最新即可,实际的版本号可能不一样 安装过程较复杂,建议用一台单独的vm安装,能做成docker image最好 基础软件 nginx-1.10.0: sudo apt-get install ng ...

  4. python解析器原理_Python程序运行原理图文解析

    本文研究的主要是Python程序运行原理,具体介绍如下. 编译型语言(C语言为例) 动态型语言 一个程序是如何运行起来的?比如下面的代码 #othermodule.py def add(a, b): ...

  5. origin python控制台怎么用_python代码运行助手如何使用

    python代码运行助手是能在网页上运行python语言的工具.因为python的运行环境在很多教程里都是用dos的,黑乎乎的界面看的有点简陋,所以出了这python代码运行助手,作为ide. 实际上 ...

  6. python执行bat文件_python自动运行cmd,bat文件

    展开全部 python编码2113启动cmd批处理文件(.bat文件),用subprocess方法可以将相应5261的cmd输出获取到,代码如下:4102#import os#os.system (& ...

  7. python代码运行顺序_python 代码运行顺序问题?

    Thread.join([timeout]) Wait until the thread terminates. This blocks the calling thread until the th ...

  8. python如何保存源文件_python自动保存百度盘资源到百度盘中的实例代码

    本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中 全部代码如下: # -*-coding ...

  9. python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式

    threading:这个模块在较低级的模块 _thread 基础上建立较高级的线程接口 以后我们就用 threading 模块来管理线程就可以了. Tread 类:控制线程创建.启动及运行方式 一.线 ...

最新文章

  1. 使用ultraedit和cl编译器打造简易c/c++开发环境
  2. ajax与HTML5 history pushState/replaceState实例
  3. 计算机图形学基础考试题,计算机图形学基础复习题
  4. vue 组件之间的传值
  5. HBase总结(二十)HBase常用shell命令详细说明
  6. 笨笨图片批量下载器 V0.3 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程] new...
  7. 稀疏组套索_Python中的稀疏组套索
  8. SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
  9. sklearn学习笔记之metrics
  10. flex向java传递 OBJECT
  11. Linux基本操作(实训一)
  12. Android 多语言对照表
  13. 如何制作网站_如何制作自己的网站
  14. 古墓丽影10linux,《古墓丽影11:暗影》Linux平台与Windows平台流畅度对比
  15. GR节点故障The member contains transactions not present in the group
  16. 【100%通过率】华为OD机试真题 Python 实现【最接近最大输出功率的设备 /查找充电设备组合】
  17. 如何获得CSDN积分(转)
  18. Y05 - 017、猜小埋年龄游戏
  19. .NetCore JWT token过期时间设置
  20. 达梦数据性能诊断与优化

热门文章

  1. Python中列表的del,remove和pop函数之间的区别
  2. wpf中groupbox有什么用_展示设计中的标摊是什么 用的什么材料
  3. python数据分析与可视化-Python数据分析与数据可视化
  4. 计算机控制z反变换公式,第三章 计算机控制系统的数学描述(修正Z变换).ppt
  5. 高并发系统 3 大利器之缓存
  6. 手把手带你玩转Tensorflow 物体检测 API (2)——数据准备
  7. 题解 [SHOI2014]概率充电器
  8. html里面怎么ul加高度,div里面嵌套了ul,为什么div的高度小于ul高度
  9. python装饰器作用和功能_python装饰器大详解
  10. unity塔防游戏怪物转向_红包版塔防游戏合集-可以赚钱领红包的塔防游戏-无广告塔防游戏红包版大全...