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

一旦程序编译成字节码(或字节码从已经存在的.pyc文件中载入),之后的字节码发送到通常称为Python虚拟机(Python VirtualMachine,简写为PVM)上来执行。PVM不是一个独立的程序,是Python的运行引擎,不需要安装。事实上PVM就是迭代运行字节码指令的一个大循环,一个接一个地完成操作。

因此Python具有更多的动态语言特性:在运行时,Python程序去构建并执行另一个Python程序是有可能的,而且往往是非常方便的。例如,eval和exec内置模块,能够接受并运行包含Python程序代码的字符串。使用如下代码可以查看add函数的字节码:import dis

def add(a,b):

sum=a+b

return sum

print(dis.dis(add))

主要的python解释器

CPython

当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器,也是默认的python解释器。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。Jython脚本可以应用于开发Web applet和servlet,建立基于Java的GUI。此外,Jython具有集成支持的功能,允许导入Python代码或使用Java的类。因为Jython要比CPython慢而且也不够健壮,它往往看做是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

生成独立运行程序

借助一些第三方工具Python程序可以生成独立的可执行二进制代码文件进行分发。这些第三方工具能够将程序的字节码、PVM(解释器)以及任何程序所需要的Python支持文件捆绑在一起形成一个单独的文件。,主要有三种工具:py2exe(Windows下使用)、PyInstaller(和py2exe类似,它能够在Linux及UNIX上使用,并且能够生成自安装的独立执行程序)以及freeze(最初始的版本)。

python代码写好了怎么运行-python代码是怎样运行的相关推荐

  1. python手写数字识别实验报告_Python代码实现简单的MNIST手写数字识别(适合初学者看)...

    补充:由于很多同学找我要原数据集和代码,所以我上传到了资源里,https://download..net/download/zugexiaodui/10913834 初学机器学习,第一步是做一个简单的 ...

  2. python程序写蛇_如何用Python画一条蛇

    先上效果图 最近又打算重新学习Python了, 之前也入门过Python, 但是弄完Python的开发环境后, 停留在print("hello world")阶段 非科班出身, 没 ...

  3. python可以写桌面软件吗-用Python编写一个桌面软件系统的步骤是什么?

    如果是商业项目,不建议用Python.不仅仅是效率问题. Python向下兼容极差,Python2.7将于2020年停止官方支持,但基于2.7的活跃项目.新项目仍旧非常多,这些个作者不知道要停止支持了 ...

  4. windows 搭建python 虚拟环境 写程序_Windows下搭建Python虚拟环境

    1.进入你想要创建python虚拟环境的目录下 2.使用pip工具安装virtualenv软件包 pip install virtualenv 3.使用virtualenv命令创建一个名字为newen ...

  5. python代码写名字_python|教你一行代码用Ta的名字比心

    关注我们:科技与Python 故事是这样的:你的女朋友名字叫andy,由于她学习上的需求,需要学习一些编程.(当然作为男朋友,是很有义务帮女朋友解决问题的.) 教他写程序的时候,如果先秀一下这行代码, ...

  6. 使用python+opencv写一个简单的条形码识别代码

    这是一段使用 Python OpenCV 库识别条形码的示例代码: import cv2# 读入图片 img = cv2.imread("barcode.jpg")# 创建条形码检 ...

  7. python怎么写游戏脚本_用PYTHON做一个简单的游戏脚本(基础,详细)

    引言 这段时间迷上了玩点点点的小游戏,但是某些重复的环节着实无聊,就想着能不能用PYTHON做一个游戏脚本,不过为了熟悉需要做脚本的各个模块,于是打算在4399上找一个比较像的游戏做个脚本练练手,后来 ...

  8. windows 搭建python 虚拟环境 写程序_Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同)...

    1.编译环境配置import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0e ...

  9. python可以用来写导航吗_在python中使用selenium进行导航

    听着,我知道你是想从我的answer计算你之前的一个问题的总页数.在上一个案例中,由于我们可以直接获得最后一个页码,所以它起作用了,但这里不是这样.在 虽然页数不直接可用,但总的条目数是- 现在,正如 ...

  10. python能力写进简历_自学 Python,用 django 它写了小贴吧,投简历都没有回应,是简历还是能力问题?...

    4月底的时候写的回答,现在来做个更新. 答主在5月中的时候找到工作,但从投简历到面试这个过程真的很艰辛. 由于我非科班,投的简历很多企业收到了也看了,但就是没回音.所幸自己坚持投,最后面试了6,7家, ...

最新文章

  1. nagios插件--磁盘IO监控
  2. SqlDataAdapter上调用存储过程
  3. (二) LtRecyclerView v2.x (更多实用方法)
  4. GDCM:输出DataSet的测试程序
  5. riak php7,Laravel中服务提供者的register和boot分别是干什么
  6. PhoneGap学习地址 / PhoneGap API介绍:Events
  7. SAP License:SAP常用操作
  8. html静态页面跳转传值,在静态页面html中跳转传值
  9. selenium + java po模式
  10. python下载快手视频教程_[小玩意] 用Python写了个下载快手视频的小脚本
  11. STM32入门——什么是STM32
  12. 初识 Rax (Web Weex)
  13. 在c语言程序中添加背景音乐,怎么给你的C语言程序添加BGM背景音乐?
  14. Input length must be multiple of 8 when decrypting with padded cipher 错误
  15. linux误删文件恢复的方法 ----debugfs
  16. 分享:你必须知道的H5加速器九大常识!
  17. MATLAB之自动控制原理(1)
  18. 推荐几本经典计算机书籍
  19. YOLOv5改进之十七:CNN+Transformer——融合Bottleneck Transformers
  20. android 手机 同步到iphone,如何把android手机所有信息同步到iphone11

热门文章

  1. work summary(1)
  2. 数据挖掘:数据预处理相关概念
  3. in-source builds are not allowed
  4. 面经——2022届CVTE提前批
  5. 【转载】C#使用is关键字检查对象是否与给定类型兼容
  6. 将GPS获得的UTC时间转换成本地时间的方法(转)
  7. ubuntu16.04 apt-get update出错:由于没有公钥,无法验证下列签名
  8. ip电话系统设计和实现
  9. [USACO09JAN]安全出行Safe Travel
  10. 进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3