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. Linux命令之文件重定向2

    linux中重定向用符号“>”表示,语法一般是 源文件 > 目标文件 1)创出.txt文件touch 1.txt 注意:创建文件夹用mkdir 2)向.txt文件中写入内容 注意:①cat ...

  2. MyEclipse 相关配置操作、问题处理及快捷键说明

    MyEclipse傻瓜式安装不做介绍,试用期结束后破解操作见博客:MyEclipse 2014 破解补丁及激活步骤 以下为安装完MyEclipse后一般需要进行的一些配置,写来自己参考用.比较简陋,望 ...

  3. poj 3485 区间选点

    题目链接:http://poj.org/problem?id=3485 题意:X轴上公路从0到L,X轴上下有一些点给出坐标代表村庄,问在公路上最少建几个出口才能使每个村庄到出口的距离不超过D. 以村庄 ...

  4. update_TypeError

    TypeError: ( 'An update must have the same type as the original shared variable ( shared_var=W, shar ...

  5. failed to bind pixmap to texture

    问题描述:我用的是Ubuntue的操作系统,终端突然挂了.我重启了一下电脑,就进不去系统了. 日志信息:  failed to bind pixmap to texture 原因: 界面管理工具坏了, ...

  6. innerHTML动态添加标签的注意事项

    在使用javascript动态添加页面上元素时,我们经常会使用DOM去逐个地将节点添加到文档碎片中,再将整个文档节点添加到DOM树中.其实还有一种方法动态添加元素:innerHTML. 我最近要将一大 ...

  7. Docker自学纪实(四)搭建LNMP部署wordpress

    我们在工作中最常用的就是LNMP网站平台 这个架构呢,是整个公司网站的核心 如果对于访问量较小的网站,可以直接在服务器上面部署 而如果是访问量很大的网站,那负载就是个很大的问题. 要么需要再买很多服务 ...

  8. Linux基础知识随笔记

    linux文件属性 ls -h human-readable以人类可读的形式显示 -i 显示inode号码 [root@oldboyedu55-bjb ~]# ls -ihl total 8.0K 3 ...

  9. Hbase学习指南

    本篇Hbase组件基于CDH5进行安装,安装过程:https://www.cnblogs.com/dmjx/p/10037066.html Hbase简介 HBase是一个高可靠.高性能.面向列.可伸 ...

  10. Python__学习路上的坑之--引用,浅拷贝,深拷贝

    copy : 相当于只是拷贝表面一层,如果里面还有深层次的引用,那么也是直接拷贝引用的地址,而且如果拷贝对象是不可变类型比如元组,那么也是直接拷贝引用. deepcopy: 无论是拷贝可变类型还是不可 ...