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

解释器是一种让其他程序运行起来的程序,是用户编写的代码与计算机硬件间的软件从逻辑层,虚拟化技术的一种。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等。

时间: 2024-10-13 01:13:32

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

Python学习笔记<二>:列表、元组、字典

1 列表和元组 可以将列表和元组当成普通的"数组",它能保存任意数量任意类型的Python 对象.和数组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象. 列表和元组有几处重要的区别.列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变.元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以).元组可以看成是只读的列表.通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样. 举例如下: >>>

python学习笔记(二)

一.版本问题 python2与python3是目前主要的两个版本. python3.0版本较之前的有很大变动,而且不向下兼容. Python 2.7作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移.即2.7版本兼容2.x和3.0的语法 Python 2.7保持了对之前版本的全兼容,而且还包含了Python 3.0的新玩意(一些新特性需要通过"from __future__ import"来启用). 如果想要在python2.7中使用:p

python学习笔记二:IDE环境搭建

工欲善其事,必先利其器.每个IDE都有自己的优点,适合的才是最好的. [伯乐在线]Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程.Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率.高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性.最好的 10 款 Python IDEs,这里详细介绍前两

python学习笔记二:流程控制

一.if else: #!/usr/bin/python x = int(raw_input('please input:')) if x >= 90: if x >= 95: print 'a+' else: print 'a' elif x >= 80: if x >= 85: print 'b+' else: print 'b' elif x >= 70: if x >= 75: print 'c+' else: print 'c' else: if x >

Python学习笔记(二)Python语法_1

[[email protected] ~]# ipython In [1]: import platform In [2]: print platform.uname() ('Linux', 'kaibin.test1', '2.6.32-431.el6.x86_64', '#1 SMP Fri Nov 22 03:15:09 UTC 2013', 'x86_64', 'x86_64') In [3]: dir(platform)        #查看platform支持的功能:dir(plat

python学习笔记二

1.python中的几种变量 1)__x 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是.不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量 2) __x__需要注意的是,在P

python学习笔记(二):python数据类型

上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.二.整形和浮点型整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正

python学习笔记二:if语句及循环语句,断点,模块,pyc

if语句 注意:语句块中的内容要强制缩进,否则出错.IndentationError,缩进错误 所有代码,如果是顶级的,必须顶格写,前面不能有空格 if - : - elif - : - else: - while语句 while -: - else: - for语句 for i in range(10)--i默认0,步长默认1,最大为9 for i in range (0,2,10)--从0开始,步长为2,最大为8 for  i   in range(-): - else: - break--

python学习笔记(二) - 函数

一. 调用函数 python内置了一些数据类型转换函数,比如int()函数可以把其他数据类型转换为整形 >>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> unicode(100) u'100' >>> bool(1) True >>> bool('') Fal