第一部分 Python如何运行

Python如何运行程序

Python运行脚本时,第一步是编译成所谓的“字节码”,之后将其转发到“虚拟机”中。

1、字节码编译:

当程序执行时,Python内部(对大多数用户是完全隐藏的)会先将源代码(文件中的语句)编译成所谓字节码的形式。编译是一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式。概括的说,Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度:比起文本文件中原始的源代码语句,字节码的运行速度要快得多。

如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存到一个以.pyc为扩展名的文件(“.pyc就是编译过的“.py”源代码)。Python保存字节码是作为一种启动速度的优化。下一次运行程序时,如果你在上次保存字节码之后没有修改过源代码的话,Python将会加载,pyc文件并跳过编译这个步骤。当Python必须重编译时,它会自动检查源文件和字节码文件的时间戳:如果你又保存了源代码,下次程序运行时,字节码将自动重新创建。

如果Python无法在机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时简单地丢弃。

2、Python虚拟机(PVM)

一旦程序编译成字节码(或字节码从已存在的.pyc文件中载入),之后的字节码发送到通常称为Python虚拟机(Python Virtual Machine, PVM)上来执行。PVM不是一个独立的程序,不需要安装。事实上,PVM是迭代运行字节码指令的一个大循环,一个接一个地完成操作。PVM是Python的运行引擎,它时常表现为Python系统的一部分,并且它是实际运行脚本的组件。从技术上讲,它才是所谓“Python解释器”的最后一步。

图2-2描述介绍的运行时的结构。这些复杂性是有意对Python程序员隐藏起来的。字节码的编译是自动完成的,而且PVM也仅仅是安装在机器上的Python系统的一部分。程序员只需简单的编写代码并运行包括有语句的文件。

注意:

(1)性能的含义

Pyhton与C和C++等完全编译语言相比不同之处:

a.Python的工作中没有“build”或“make”的步骤,代码在写好后立即运行;

b.Python字节码不是机器的二进制编码(例如,Intel芯片的指令)。

Python代码无法运行像C或C++代码一样快,原因是PVM循环(而不是CPU芯片)仍然需要解释字节码,并且字节码指令与CPU指令相比需要更多的工作。

纯Python代码的运行速度比传统解释语言快,原因是和其他经典的解释器不同,这里仍有内部的编译步骤:Python并不需要反复地重分析和重分解每一行语句。

(2)开发的含义

Python执行模块的另一个情况是其开发和执行的环境实际上并没有区别。在Python中,编译器总是在运行时出现,并且是运行程序系统的一部分。

在Python中真正拥有的只有运行时:完全不需要初始的编译阶段,所有的事情是在程序运行时发生的,这甚至还包括了建立函数和类的操作以及连接的模块,这些事情对于静态语言往往是发生在执行之前的。

时间: 2024-11-05 15:55:41

第一部分 Python如何运行的相关文章

[第一节]python基础知识

写在前面: 目前python的最新版本是3.6.本博客以3.6版为主,会附带提及2.7版本与此版本的不同之处! **************************************************************************** 目录: 1. python简介. 2. python的特点. 3. python的用途. 4. 选择python的目的. 5. 安装python.(linux环境) 6. python代码的执行过程. 7. python解释器. 8.

Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level

[问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not match any outer indentation level [解决过程] 1.对于此错误,最常见的原因是,的确没有对齐.但是我根据错误提示的行数,去代码中看了下,没啥问题啊. 都是用TAB键,对齐好了的,没有不对齐的行数啊. 2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释

Python:Python的运行过程

1.Python是什么 和Java以及c#一样,Python也是一门基于虚拟机的语言.熟悉Java开发的人在命令行执行一个Java程序的过程通常如下: javac hello.java java hello Python的运行过程与Java类似,只不过将这两步融合成了一步而已.当我们在命令行输入python hello.py时,其实是激活了python的"解释器",告诉它:你要开始工作了,但在"解释"工作之前,python"解释器"的第一项工作和

Python Web运行环境搭建

最近打算用 Python 来开发网站的一些其它功能,先来搭建 Python 的运行环境吧. 安装 Python Python 的目前有两个版本,Python 2.7.5 和 Python 3.3.2.Python 3.x 与 2.x 不仅仅是版本的新旧的区别那么简单,Python3.x 是一个全新的东西. 我下的 Python 2.7.5 这个版本是 .msi 格式的,所以直接安装即可,我将 Python 2.7 安装在了 E:\Python 下.雅加达娱乐城 然后就是配置环境变量,这个学过 J

第一篇--python介绍、安装与入门

 Python介绍 1.简介 python创始人为:吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承: 2.用途 互联网公司广泛使用Python来做的事一般有:自动化运维.自动化测试.大数据分析.爬虫.Web 等: 目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.Dropbox.BT.Quora(中国知乎).豆瓣.知乎.Google.Yahoo!.F

萌新向Python数据分析及数据挖掘 第一章 Python基础 (上)未排版

因word和博客编辑器格式不能完全对接,正在重新排版,2019年1月1日发出第一章完整版 本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 python安装以及环境搭建 python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不

python如何运行程序--------基础篇之一

python运行机制 python作为一种动态语言,其实是一个解释器软件包.当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤.第一步是编译成所谓的"字节码",如果Python进程拥有写入权限,将把程序的字节码保存为一个以.pyc为扩展名的文件, 如果Python无法在机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时简单地丢弃.一旦程序编译成字节码(或字节码从已经存在的.pyc文件中载入),之后的字节码发送到通常称为Python虚拟机

萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类

第一章 Python基础 第九节 类 面向对象编程时,都会遇到一个概念,类,python也有这个概念,下面我们通过代码来深入了解下. 其实类 和函数都是为了节省代码,有了类的的概念,就可以把相同的代码写在父类,子类继承后就可以直接使用,而且通过选择对应的父类就可以直接使用对应父类的内容. 创建和使用类 1 class Dog(): #认识狗这类东西 2 def __init__(self, name, age): #狗是肯定有名字和年龄的,是个狗就有,要用户填写 3 self.name = na

萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常

第一章 Python基础 第十节 文件和异常 从文件中读取数据 读取文件.文件路径   1 filename = 'pi_digits.txt' #文件名取个代号 2 #读取整个文件 3 with open(filename) as file_object: 4 contents = file_object.read()# 给内容取个代号 5 print(contents.rstrip()) 6 #逐行读取 7 with open(filename) as file_object: 8 for