解释器是一种让其他程序运行起来的程序,是用户编写的代码与计算机硬件间的软件从逻辑层,虚拟化技术的一种。Python可以被当做一种解释器软件包,Python代码必须在解释器中运行,因此机器上安装Python的最小组件是-解释器和支持的库。本文只针对Windows平台,将Python加入到环境变量path中,如“C:\Python34”,Python版本为3.4,下同。

1,程序编写

Python程序编写支持交互式和执行文件两种,前者就是在命令行键入指令、回车立刻得到执行效果,后者则是先写一个后缀为.py的包含Python语句的文件name.py(称为一个模块)、命令行进至文件所在路径、键入"python name.py" 即可运行。

Python系统还提供了一个标准、免费的可视化用户界面IDLE,能够在单独的界面上进行编辑、运行、浏览和调试Python程序。IDLE可在Windows、Linux、UNIX等多个平台上运行。

2,Python程序执行、优化和发布

对于Python解释器而言,程序运行过程是:

(1)字节码编译-字节码是源代码底层的、与硬件平台无关的表现形式,可以提高运行速度。若Python拥有写文件的权限,编译产生的字节码与.py文件位于同一目录,后缀是.pyc。若编译后,你的程序再没修改则Python会跳过编译步骤而直接加载字节码文件执行,Python检查文件是否修改的方法是对比源文件与字节码文件的时间戳。若Python不具有写权限,字节码则在内存中生成、程序结束后被丢弃-即每次执行都得编译。

(2)Python虚拟机-字节码一旦生成就会被发送到Python虚拟机(PVM)上执行,PVM就是解释、s运行字节码指令的一个大循环。当Python虚拟机开始执行时,它会先进行一些初始化操作,最后进入PyEval_EvalFramEx函数,它的作用是不断读取编译好的字节码,并一条一条执行,类似CPU执行指令的过程。函数内部主要是一个switch结构,根据字节码的不同执行不同的代码。

如下图是标准的Python执行过程,称为CPython,其运行速度最快、最完整、最健全。实际上Python的执行过程随着时间也在改变,另两种变种是Jython和IronPython。Jython目的是为了和Java语言集成,包含java类,编译Python源代码形成java字节码并映射到java虚拟机上,实现与java的无缝集成。IronPython的设计理念则是让Python与Windows平台上的.NET框架以及与之对应的Linux开源Mono编写的应用相集成,由微软开发。

Python开发中,还包含一些优化基本执行模块的优化系统,试图提高Python的运行速度等,如Psyco实时编译器和Shedskin C++转换器。Psyco实时编译器需要单独获取并安装,就是一种扩展字节码执行模块的组件,是一个PVM增强工具,它收集并使用信息使得Python程序执行过程中,部分字节码转换成底层的真正二进制机器代码,从而提高运行速度。Psyco目前只能为Intel X86架构生成二进制机器代码,支持Linux、window、MAC操作系统。Shedskin C++转换器则是尝试将Python代码转换成C++代码,然后使用C++编译器将C++代码编译成机器代码。

另外,如果需要将Python程序生成可独立执行的二进制代码则需要第三方工具“冻结二进制文件”(Frozen Binary)。Frozen Binary将Python程序字节码、PVM以及任何所需的支持文件打包成一个单独文件包,形成可分发的可执行二进制程序。免费工具有适用于windows平台的py2exe,Linux、Unix平台的PyInstaller等。

Python学习笔记(二)Pytho解释器和程序开发、执行过程相关推荐

  1. python学习笔记(二) 基本运算

    python学习笔记(二) 基本运算 1. 条件运算 基本语法 if condition1: do somethings1elif condition2: do somethings2else: do ...

  2. python学习笔记(二十三) -- 多进程和多线程

    目录 多线程多进程的意义 多进程的使用 方式一(fork):  只能在Unix/Linux/Mac系统下执行,windows不可以 方式二(multiprocessing.Process): 全平台通 ...

  3. (10.1)Python学习笔记二

    1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...

  4. python学习笔记二

    1 正则 1-1 普通字符 s1 = 'asd25454655js6565askJ\nNKJLasd5165123' # 1 匹配单个大写英文字母 obj = re.compile('[A-Z]') ...

  5. python学习笔记二——阅读MakeHuman程序源码小结

    1.环境变量 用Python Shell设置或获取环境变量的方法: 一.设置系统环境变量 1.os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型 2 ...

  6. Python学习笔记|二.Python安装教程

    Python 安装教程 Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 安装Pyth ...

  7. 【懒懒的Python学习笔记二】

    列表是Python新手可直接使用的最强大的功能之一. 一.创建一个列表 在Python中,用方括号([ ])表示一个列表,其中用逗号(,)分割列表元素,下面是一个简单的列表示例: . 如果你让Pyth ...

  8. python学习笔记二— 循环

    程序结构 •三种结构◾顺序 ◾循环 ◾分支 分支结构 •分支结构基本语法◾if (如果) 条件表达式: ◾语句1 ◾语句2 ◾语句3 ◾- •条件表达式就是计算机结果必须为 布尔值 的表达式 •表达式 ...

  9. 廖雪峰官方网站python学习笔记:第一个Pyhon程序

    输入和输出 print() print()函数可以接受多个字符串,用逗号","隔开,就可以练成一串输出: >>>print('The quick brown fo ...

最新文章

  1. 无法解决 equal to 操作中 SQL_Latin1_General_CP1_CI_AS 和 Chinese_PRC_CI_AS 之间的排序规则冲突。...
  2. 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )
  3. Zuul1.0和2.0我们该如何选择?
  4. Nature论文解读:深度学习助力毫秒之间识别癌细胞
  5. C++sparse matrix 稀疏矩阵的实现算法(附完整源码)
  6. RBAC模型:设计思路
  7. Android7.0 emui主题,全新EMUI5.0基于Android7.0 天生快,一生快!
  8. Linux查看所有用户及用户管理命令
  9. Eclipse4.2界面难看,启动速度,修改方法
  10. 最强战队出炉,2020腾讯广告算法大赛圆满落幕
  11. 【转载】 C#中使用int.TryParse方法将字符串转换为整型Int类型
  12. flume的几种使用方式
  13. 风云第三部 第533回 乌云蔽日 力掌乾坤
  14. excel学习-添加控件
  15. 单片机实例11—— 00-59秒计时器(利用软件延时)(硬件电路图+汇编程序+C语言程序)
  16. android连接打印机
  17. 解决排列组合问题的通用算法
  18. 群晖服务器+微信同步,群晖服务器 云同步
  19. selenium自动化测试实战教学(12306自动化订票)春节出行必备
  20. 编码标准:纪律和人因工程的双剑合璧

热门文章

  1. 后来,我去了拼多多,做了数据分析师。
  2. 一名普通学生的大一总结【不知我等是愚是狂,唯知一路向前奔驰】
  3. 大一怎么学好c语言_计算机专业大一学生,应该先学习哪门编程语言
  4. 按照eslint 规则一键修复
  5. WPF界面控件Telerik UI for WPF初级入门教程 - 入门指南
  6. 简述如何编辑出一篇漂亮的微信公众号文章
  7. 摇一摇手机控制手机录音功能
  8. PHP storm安装教程
  9. 针对具有纯滞后环节的一阶惯性系统PID参数整定(衰减曲线法)
  10. GANs: 学习生成一维正态分布