Python解释器简介
解释器是一种让其他程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,Python解释器就是能够让Python程序在机器上执行的一套程序。
当我们执行写好的Python代码时,Python解释器会执行两个步骤
- 把原始代码编译成字节码
编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C/C++ 一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc 为扩展名的文件,如果Python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。 - 把编译好的字节码转发到Python虚拟机(PVM)中进行执行
PVM是 Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环、一个接一个地完成操作。
Python 解释器的几种实现版本
Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式
1. CPython
其中CPython 是标准的实现,其它的都是有特定目标的。
CPython 是由C语言编写的,它是大多数Linux和Mac OS X机器预装的Python解释器,也是所有Python解释器中运行最快、最完整、最健全的。
2. Jython
Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython 慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。
3. IronPython
IronPython 设计的目的是让Python 程序可以与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。
Psyco 实时编译器
psyco 系统不是Python的另一种实现方式,而是Python字节码执行模块的一个扩展组件,它可以让程序运行的更快。它是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在开发个过程中,Psyco无需代码的修改或独立的编译步骤即可完成这一转换。
概括地讲,就是当程序运行时,Psyco收集了正在传递过程中的对象的类别信息,这些信息可以用来裁剪对象的类型,从而生成高效的机器代码。机器代码一旦生成,就替代了对应的原始字节码,从而加快程序的整体执行速度。一些通过Psyco优化的Python代码的执行速度可以像编译好的C代码一样快。
因为字节码的转换与程序运行同时发生,所以Pysco往往被看做是一个即时编译器(JIT)。实际上Psyco是一个专有的JIT编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。
Psyco是用纯Python的算法代码实现的。这点尤为重要,那些为了优化往往需要迁移到C的那部分代码,使用了Psyco后,这样的迁移就没有必要了。
模块,模块是一个包含了Python语句的简单文本文件。一旦编写完成,可以让Python解释器多次运行这样的文件中的语句。
第一段脚本
在命名为script1.py 的文件中输入以下代码:
# A first Python script
import sys # Load a library module
print(sys.platform)
print(2 ** 100) # Raise 2 to a power
x = 'Spam!'
print(x * 8) # String repetition
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
- import sys 是导入一个Python模块,用于获取系统平台的名称
- print(sys.platform) 是输出当前系统的名称,是linux 系统还是Windows系统
使用命令行运行文件
python script1.py
- 1
- 1
我是把文件放到F:PythonStudy 下面了,以上命令是在命令行窗口把目录切换到你所放文件的目录下面执行的。
执行结果如下:
linux 下执行方法也一样,只要会一些常见的linux 命令即可,linux 下执行结果如下:
模块导入和重载
每一个以扩展名为.py 结尾的源代码文件都是一个模块,模块中的一个个变量称为属性,所谓导入模块从本质上讲就是载入另一个文件,并能够读取那个文件中的内容。通过这样的导入机制,一个模块的属性可以被另一个模块使用,进入一环套一环构成系统。
上面的import sys 中的sys 就是一个由多个文件组成的一个模块,platform 就是sys 中的一个属性,当我们想知道系统的相关信息时,只用导入sys 这个模块并运行即可得到系统的相关信息。
Python集成开发环境
- IDLE
IDLE是使用 Tkinter GUI 工具开发的Python集成开发环境(IDE),它可以几乎在任何平台上运行,Windows 下是默认安装的,程序在C:Python35Libidlelib 下的idle.py 或idle.pyw,linux 下是在/usr/bin/idle-python3.5
注:根据Python 程序安装位置不同而不同 - Eclipse和PyDev
Eclipse 在安装了PyDev(或类似的)的插件后也可以进行Python的开发,并且功能强大。 - Komodo
Komodo 是一款全功能的Python(及其他语言)开发环境GUI,包括标准的语法着色,文本编辑、调试以及其它特性。 -
NetBeans IDE Python 版
NetBeans是一款强大的开源开发环境GUI,针对Python开发者支持很多高级功能:代码完成、自动缩进和代码着色、编辑器显示、代码折叠、重构、调试、代码覆盖和测试、项目等等。