Python基础——安装运行
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基础——安装运行的更多相关文章
- python 基础安装使用
首先我们来学习一下怎么安装python和更新python,再来学习一些简单的解释器.变量.编码内容.循环等代码 第一步开始安装Python环境 安装Python windows: 1 2 3 4 5 ...
- python virtualenv 安装运行saltstack
需求产生场景: 1.python的virtualenv虚拟环境非常的好用. 2.saltstack作为运维自动化的一个重要组件也挺好用的. 但是: 1.saltsatck ...
- python基础-安装篇
1.安装之前我们要先去python的官网下载python的安装包 下载地址:https://www.python.org/downloads/ Python 官网有两个版本一个是3.5.2(最新版)一 ...
- python基础 ---- 安装
------ 安装两个软件就行了 1.Anaconda 地址: 作用: 管理不同版本的python 的第三方包 下载第三方依赖包和构造版本开发环境 2.python常用的IDE环境 2.1 P ...
- Python 基础学习篇
注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇: Python基础- 常用数据类型 第三篇: ...
- Python基础第一课
Python基础 安装软件并配置环境变量 1.第一句python --初学后缀名可以是任何数 --后期学习需要导入模块时不是py后缀名会报错 2.两种执行方式 Python解释器 py文件路径 Pyt ...
- python基础初识介绍以及安装
python介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...
- python基础系列教程——Python库的安装与卸载
python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...
- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda
---恢复内容开始--- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda 从头开启python的开发环境搭建.安装比较简单, ...
随机推荐
- Spark核心组件
Spark核心组件 1.RDD resilient distributed dataset, 弹性分布式数据集.逻辑上的组件,是spark的基本抽象,代表不可变,分区化的元素集合,可以进行并行操作.该 ...
- Vue.js-创建Vue项目(Vue项目初始化)并不是用Webstrom创建,只是用Webstrom打开
我犯的错误:作为vue小白,并不知道还要单独去创建初始的vue项目,于是自己在webstrom中建了一个Empty Project, 在其中新增了一个js文件,就开始import Vue from “ ...
- 笨办法学Python(二十四)
习题 24: 更多练习 你离这本书第一部分的结尾已经不远了,你应该已经具备了足够的 Python 基础知识,可以继续学习一些编程的原理了,但你应该做更多的练习.这个练习的内容比较长,它的目的是锻炼你的 ...
- 从HTTP响应头判断是否命中CDN
腾讯云: X-Cache-Lookup:Hit From MemCache 表示命中CDN节点的内存X-Cache-Lookup:Hit From Disktank 表示命中CDN节点的磁盘X-Cac ...
- SPOJ - LIS2 Another Longest Increasing Subsequence Problem
cdq分治,dp(i)表示以i为结尾的最长LIS,那么dp的递推是依赖于左边的. 因此在分治的时候需要利用左边的子问题来递推右边. (345ms? 区间树TLE /****************** ...
- POJ - 3109 Inner Vertices
不存在-1的情况,而且最多一轮就结束了.如果新增加的黑点v0会产生新的黑点v1,那么v0和v1肯定是在一条轴上的,而原来这条轴上已经有黑点了. 离散以后扫描线统计,往线段上插点,然后查询区间上点数. ...
- 装箱问题,贪心(POJ1017)
题目链接:http://poj.org/problem?id=1017 解题报告: #include<stdio.h> int main() { int n,a,b,c,d,e,f,x,y ...
- 获取页面的url
设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.jb5 ...
- 【洛谷P1323】删数问题
删数问题 题目链接 首先找出最小的k个数:用堆每次取出最小的元素p,将p*2+1和p*4+5压入堆. 贪心求最大数:从前往后找第一个data[j+1]>data[j],删除data[j].(链表 ...
- JavaEE权限管理系统的搭建(三)--------springmvc和mabatis整合环境搭建
本节介绍如何环境的搭建和配置: 首先要在父工程引入jar包依赖: <!-- 通过属性定义指定jar的版本 --> <properties> <spring.version ...