Python是如何运行的?

像绝大多数编程语言一样,要在计算机上能够运行python程序,至少需要安装一个最小的Python包:一个Python解释器和支持的库。

安装Python

安装包下载:http://www.python.org/

根据不同的平台,选择不同的安装包。Windows平台可通过获取并运行自安装的可执行文件,把Python安装到机器上,一般情况是双击后再所有的弹出的对话提示框选择“是”或“继续”即可;Linux平台都预装有Python以及相关标准库。

Python如何运行程序

当我们编写好python代码并保存.py文件后,在命令行模式下用python命令运行python代码,python解释器会执行一些我们看不到的步骤,确切的说第一步是编译成所谓的“字节码”,第二步将其转发到所谓的虚拟机PVM,第三步是虚拟机PVM将我们的程序转为计算机可执行的二进制代码。

字节码编译

当程序执行时,Python内部(绝大多数是完全隐藏的)会现将源代码(.py)编译成字节码的形式。编译时一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式。通俗的讲是Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度,比起文本文件中的原始代码语句,字节码的运行速度要快得多。Python字节码不是机器上的二进制码,字节码是特定于Python的一种表现形式。

Python编译字节码的过程是完全隐藏起来的,如果Python进程在机器上拥有写入权限,它将把程序的字节码保存为一个以.pyc为扩展名的文件(“.pyc”就是编译过的“.py”源代码)。当程序运行之后,会在源代码的同一目录下看到这些文件。如果在上一次保存字节码之后没有修改源代码的话,Python将会加载.pyc文件并跳过编译步骤。当源代码修改后,它自动检查源文件和字节码文件的时间戳,字节码将会自动重新创建并覆盖之前的.pyc字节码文件。需要注意的是如果Python不拥有写入权限的话,并不会影响程序的工作。python仍然会有字节码的编译过程,字节码将会在内存中生成并在程序结束时释放。由于字节码.pyc能够加速启动程序,建议给python有写入权限。

Python虚拟机(PVM)

当字节码编译之后,将会把字节码发送到Python虚拟机(Python Virtual Machine,简写为PVM)上执行。实际上,PVM就是迭代运行字节码指令的一个大循环,一个接一个地完成操作。PVM是Python的运行引擎,是Python系统的一部分,是实际运行脚本的组件。

Python性能

python是代码写好后立即运行的,不需要像C/C++那样build和make等步骤,在开发上效率得到极大的提高,开发和执行环境实际上是没有区别的。Python代码无法运行像C/C++代码一样快的原因:PVM循环仍然需要解释字节码,并且字节码指令与CPU指令相比需要更多的工作,与其他的解释器不同,Python并不需要反复重分析和重分解每一行语句,实际上Python代码的运行速度介于传统的编译语言和传统的解释语言之间。

Python的主要实现方式

python语言主要有三种表现方式:CPython、Jython和IronPython。

CPython:和其他两种实现方式相比,原始的、标准的Python实现方式称作为CPython。计算机上一般预安装的为CPython。

Jython:是python语言的替代实现方式,其目的是为了与Java编程语言集成,能够让Python代码脚本化java应用程序。Jython包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。

IronPython:其设计目的是让Python程序可以与Windows平台上的.NET框架以及与之对应的Linux上的Mono编写成应用程序相集成。像微软早期的COM模型一样,将.NET和C#程序语言的运行系统设计成与语言无关性的对象通信层。IronPython允许Python程序既可以用作客户端也可以用作服务端的组件,还可以与其他.NET和C#的语言进行通信。

Python程序的运行

在安装完Python包之后,有多种办法可以运行Python:在IDE中、系统终端中等。Python解释器成功安装在计算机上后,往往在操作系统提示环境下驶入python,不需要任何参数。如Windows的cmd下运行:

Linux下运行:

交互地运行代码

在交互模式下,想输入输入多少Python命令就输入多少,每一个命令在输入完之后回车即可立即运行。此外,交互模式下自动打印表达式结果,往往可以不需要每次都输入print语句;也可以在交互模式输入多行语句(if、while、for等复合语句),在输入完所有语句后按两次Enter后会立即运行。

交互模式是python实验绝佳的好地方。当我们对一段Python代码的运行有任何疑问的时候,马上可以打开交互命令行并实验代码,可以看到发生了什么。

可执行脚本(#!)

如果在Linux及其他的Unix类系统上使用Python,可以将Python代码编程为可执行程序,就像使用Shell语言编写的csh和ksh一样。这样的脚本往往叫做可执行脚本。简而言之,Unix风格的可执行脚本包含了Python语句的一般文本文件,但是有两个特殊的属性。

  • 它们的第一行是特定的。脚本的第一行往往以字符#!开始(通常叫做“hash bang”),其后紧跟机器python解释器的路径
  • 它们往往都拥有可执行的权限。脚本文件往往通过告诉操作系统它们可以作为顶层的程序执行,而拥有可执行的权限。

例如在shell上vim test.py,保存文件之后,确保改文件有执行权限后,在shell上可以./test.py直接运行代码。

在Window平台必须在命令行模式下输入test.py或python test.py运行

Python基础——安装运行的更多相关文章

  1. python 基础安装使用

    首先我们来学习一下怎么安装python和更新python,再来学习一些简单的解释器.变量.编码内容.循环等代码 第一步开始安装Python环境 安装Python windows: 1 2 3 4 5 ...

  2. python virtualenv 安装运行saltstack

    需求产生场景:      1.python的virtualenv虚拟环境非常的好用.      2.saltstack作为运维自动化的一个重要组件也挺好用的. 但是:      1.saltsatck ...

  3. python基础-安装篇

    1.安装之前我们要先去python的官网下载python的安装包 下载地址:https://www.python.org/downloads/ Python 官网有两个版本一个是3.5.2(最新版)一 ...

  4. python基础 ---- 安装

    ------  安装两个软件就行了 1.Anaconda   地址:  作用: 管理不同版本的python 的第三方包 下载第三方依赖包和构造版本开发环境 2.python常用的IDE环境 2.1 P ...

  5. Python 基础学习篇

    注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇:  Python基础- 常用数据类型 第三篇: ...

  6. Python基础第一课

    Python基础 安装软件并配置环境变量 1.第一句python --初学后缀名可以是任何数 --后期学习需要导入模块时不是py后缀名会报错 2.两种执行方式 Python解释器 py文件路径 Pyt ...

  7. python基础初识介绍以及安装

    python介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...

  8. python基础系列教程——Python库的安装与卸载

    python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...

  9. python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda

    ---恢复内容开始--- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda 从头开启python的开发环境搭建.安装比较简单, ...

随机推荐

  1. ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request 不进入controller

    今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语 ...

  2. Spark master节点HA配置

    Spark master节点HA配置 1.介绍 Spark HA配置需要借助于Zookeeper实现,因此需要先搭建ZooKeeper集群. 2.配置 2.1 修改所有节点的spark-evn.sh文 ...

  3. 【微软大法好】VS Tools for AI全攻略(4)——选择适合自己的虚拟机

    当我们选择好了自己的虚拟机后,也许效果不尽如人意.就比如我,发现代码在训练一段时间之后,CPU的使用率会下降. 这个时候我们就要开始考虑,是不是我们选择的虚拟机不是适合自己的型号. Azure的虚拟机 ...

  4. mysql:数据库保存时间的类型——int和datetime的区别

    我们都知道,时间保存在数据库中,可以选择使用两种类型,一种是int,一种是datetime 那么,它们两个有什么区别呢?要怎么用呢? 现在和小仓鼠一起来探讨一下 1.int和datetime的使用区别 ...

  5. 323. Number of Connected Components in an Undirected Graph (leetcode)

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  6. C++学习之虚析构函数

    什么样的情况下才需要虚析构函数? 类需要控制自己的对象执行一系列操作时发生什么样的行为,这些操作包括:创建(对象).拷贝.移动.赋值和销毁.在继承体系中,如果一个类(基类或其派生的类)没有定义拷贝控制 ...

  7. win8下使用IIS服务器及自定义服务器端包含模块(SSI)步骤

    配置完过段时间就容易忘记,特此记录. 1.开启IIS服务器. 默认没有安装,需要先安装. 打开控制面板--> 打开“程序和功能”--> 左侧选择“启用或关闭windows功能”--> ...

  8. 前端js限制上传文件类型及大小(1)

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. vuejs生命周期函数

    生命周期函数就是vue实例在某一个时间点会自动执行的函数 当我们创建一个实例的时候,也就是我们调用 new Vue() 这句话的时候,vue会帮助我们去创建一个实例,创建过程其实并不像我们想的那么简单 ...

  10. SQL随手记

    数据库改名 想要达到的效果,类似于将一个文件[复制粘贴重命名]. 0.首先得断开连接,复制一份备份.然后再连接上,进行下面的操作. 1.在树形上,选中要改名的数据库,右键重命名. 2.还是它,右键,属 ...