返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的编译器与解释器的作用是什么
  • 179
分享到

Python中的编译器与解释器的作用是什么

2023-06-02 00:06:28 179人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python中的编译器与解释器的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数据的表示方式我们都知道,现实生

本篇内容介绍了“python中的编译器与解释器的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、数据的表示方式

我们都知道,现实生活中,数字的表示方式有很多种,常见的有二进制、八进制、十进制和十六进制。十进制我们都很熟悉,加法口诀表我们都背过,主要是使用0~9,这10个阿拉伯数字来构建整个十进制的体系,其中最核心的法则是“逢十进一”,借位则是“借一当十”。那么为什么全世界不管什么国家,什么历史,什么文化水平基本都是用十进制作为基本进制呢?是因为我们人有10个手指头,掰起来最方便!我们对十进制有着天然的友好度。

那么对于计算机呢?计算机不是人,没有10个手指头可以掰,所以它用不了十进制。那么它用几进制?二进制!二进制是用0和1两个数码来表示的数,也就是形如010101010的样子。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

为什么计算机要使用二进制作为自己的机器语言也就是数据的表示方式呢?因为计算机最小的计算单元是根据开关状态高低电平来确定的,它只有开和关,高和低的概念,换成数学就是0和1的两种。同样的,在物理存储方面,硬盘的磁道只能区分打孔和未打孔的状态,也是0和1两种。同时二进制便于进行加、减运算和计数编码。二进制与十进制数易于互相转换。二进制便于逻辑判断(是或非),逻辑判断通常也是两种状态,这和二进制很搭配。二进制表示数据还具有抗干扰能力强,可靠性高的特点,因为当受到一定程度的电磁干扰时,只要可以分辨出它是高电平还是低电平,至于高多少或低多少并不重要,就能区分0和1,这在网络信号中,就是天生自带抗干扰能力。

Python中的编译器与解释器的作用是什么

但是,在人机交流上,二进位制有致命的弱点,数字的书写特别冗长,并且没有人类可读性!例如,十进位制的100000写成二进制就是11000011010100000,长了好几倍,而且你能从一个这么长的二进制数里读出它的十进制数是多少吗?

计算机不能独立存在,目前也无法自我创造,不管是输入还是输出,它的一切都必须和人交流。那么问题来了,人类只能读10进制和英语、汉语等,可计算机只会010101,至于英语、汉语对它而言更是天书。那么我们是怎么和计算机交流的呢?怎么将我们的英语或者汉语编码成计算机能够识别的1010101呢?

二、 编程语言发展历程

1. 打孔纸条

我们已经知道了计算机只懂机器语言,也就是二进制的数据表示方式,任何对它的操作和编码,最终都要统一到这上面来,然而这是一个悲伤的故事。

Python中的编译器与解释器的作用是什么

起初,为了让计算机按我们的想法工作,程序员不得不编写计算机可以读懂看明白直接执行的机器码,也就是01010101的样子,打孔字条就是这么干的。用打没打孔来代表0和1。OK,计算机没问题,它能无障碍阅读,可程序员就难受了。拍脑袋也能想得到这里面的问题。容易出错,效率低,编写困难,维护困难。可能就是个简单的打印“hello world”,也许就需要好几米长的字条。这简直就是原始社会,生产效率低下的令人发指。发生个火灾什么的,直接Over。唯一的好处就是无需转换,可直接执行,但相对缺点来讲,这点好处完全可以被忽略。

2. 汇编语言

Python中的编译器与解释器的作用是什么

汇编语言是一种可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。也就是说不同平台之间不可直接移植,它是平台相关的,你在这个硬件平台写的汇编程序,换到另外一套硬件上去是运行不了的。 因此,汇编语言通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序较多使用汇编语言。相比于机器码,它更偏向人类的语言习惯,更易于编写和阅读,也就是有一点抽象符号概念化了,这大大提高了编程效率。但是,这依然是一种低级语言,还有改善和提高的空间。

上面一段看得晕没关系,简单地说就是汇编语言相比打孔纸条,对人类更友好一点了,至少能用几个类似ADD\CALL\MOV的英文缩写了。但是,它牺牲了一定的性能,并且依然不够友好。

3. C语言

在C语言之前其实还有很多低级语言,我们不关心它们。为了让编程更简单,更高效,聪明的计算机程序员,一步步发明了FORTRAN、BASIC、B等许多语言,然后在1972年诞生了无人不知,应用最广,影响最深,至今仍然地位不可动摇的C语言。

Python中的编译器与解释器的作用是什么

C语言为什么这么厉害?归根结底是一句话:直接操作硬件!同样的算法,用C语言,其执行效率超过JAVA等语言很多。那可能有人会问,C和汇编和机器码比呢?肯定是C慢,但是写个汇编程序和写个C程序的效率差别那就更大了。C语言在人类友好性和底层相关性上达到了一个高度的平衡。这两者是互相矛盾的,不可同时兼得。

C干了些什么?其实它就是在人类友好性方面相比以前跨出了更大一步。人类是方便了,可机器就迷糊了!你给我这么多字符都是啥意思?机器它只懂二进制啊!那么C的代码是如何被执行的呢?这就得请出编译器了!

编译器将编程语言写的代码翻译成机器能够执行或者说“看懂”的二进制机器码。

其实我们安装JAVA也好,C也好,Python也罢,主要就是安装的这个编程语言的“编译器”。

4. Python语言

在几十年前,C语言是当之无愧的高级语言代表,现在也依然是语言排行榜第二的霸主。然而,在很多领域,它已经不太适用了,现今更主流的语言是那些上手快、简单易懂,说白了就是门槛低的语言,让更多的人能进入程序员行业,让编程能更容易、更快是未来的发展趋势。也就是说,需要让编程语言更贴近人类语言,更远离机器语言。

Python就是这么一种语言。它的语法简单明了,更贴近人类的使用习惯。作为一种动态解释性语言,让人们在写代码的时候可以更多的关注业务逻辑细节,而不需要花太多精力去关注数据类型定义、程序运行效率等!

既然都说的是机器不懂的“人话”,那必然也需要一个Python“编译器”。对于Python语言,广义上的“编译器”,叫做解释器。

三、 编译器与解释器

编译器/解释器:高级语言与机器之间的翻译官

都是将代码翻译成机器可以执行的二进制机器码,只不过在运行原理和翻译过程有不同而已。

Python中的编译器与解释器的作用是什么

那么两者有什么区别呢?

Python中的编译器与解释器的作用是什么

用一个通俗的例子进行比喻:我们去饭馆吃饭,点了八菜一汤。编译器的方式就是厨师把所有的菜给你全做好了,一起给你端上来,至于你在哪吃,怎么吃,随便。解释器的方式就是厨师做好一个菜给你上一个菜,你就吃这个菜,而且必须在饭店里吃。

Python中的编译器与解释器的作用是什么

至于更深入的编译器和解释器是如何工作的,请参考史诗巨著《编译原理》,这本书有个外号,叫做“龙书”。

Python中的编译器与解释器的作用是什么

四、 Python解释器种类

Python有好几种版本的解释器:

CPython:官方版本的解释器。这个解释器是用C语言开发的,所以叫CPython。CPython是使用最广的Python解释器。我们通常说的、下载的、讨论的、使用的都是这个解释器。

Ipython:基于CPython之上的一个交互式解释器,在交互方式上有所增强,执行Python代码的功能和CPython是完全一样的。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy:一个追求执行速度的Python解释器。采用JIT技术,对Python代码进行动态编译(注意,不是解释),可以显著提高Python代码的执行速度。绝大部分CPython代码都可以在PyPy下运行,但还是有一些不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

Jython:运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

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

五、 Python的运行机制

Python作为动态解释性语言,其运行机制可参考下图(图片来自网络,其中的“编译器”是对解释器的广义称呼):

Python中的编译器与解释器的作用是什么

都说解释器慢,Python也有想办法提高一下运行速度的,那就是使用pyc文件。这点参考了JAVA的字节码做法,但并不完全类同。

我们编写的代码一般都会保存在以.py为后缀的文件中。在执行程序时,解释器逐行读取源代码并逐行解释运行。每执行一次,就重复一次这个过程,这其中耗费了大量的重复性的解释工作。为了减少这一重复性的解释工作,Python引入了pyc文件,pyc文件是将py文件的解释结果保存下来的文件,这样,下次再运行的时候就不用再解释了,直接使用pyc文件就可以了,这无疑大大提高了程序运行速度。

对于pyc文件,你必须知道以下几点:

  • 对于当前调用的主程序不会生成pyc文件;

  • 以import xxx或from xxx import xxx等方式导入主程序的模块才会生成pyc文件;

  • 每次使用pyc文件时,都会根据pyc文件的创建时间和源模块进行对比,如果源模块有修改,则重新创建pyc文件,并覆盖先前的pyc文件,如果没有修改,直接使用pyc文件代替模块;

  • pyc文件统一保存在模块所在目录的__pycache__文件夹内。

如下图所示,modula_a被module_main导入后会生成对应的pyc文件,但是module_main不会生成pyc文件!!

Python中的编译器与解释器的作用是什么

另外,Python的pyc并不等同于JAVA的字节码!

“Python中的编译器与解释器的作用是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Python中的编译器与解释器的作用是什么

本文链接: https://lsjlt.com/news/228118.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中的编译器与解释器的作用是什么
    本篇内容介绍了“Python中的编译器与解释器的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数据的表示方式我们都知道,现实生...
    99+
    2023-06-02
  • 汇编器、编译器和解释器是什么
    这篇文章主要介绍“汇编器、编译器和解释器是什么”,在日常操作中,相信很多人在汇编器、编译器和解释器是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”汇编器、编译器和解释器是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • Python编辑器的编译方法是什么
    Python编辑器的编译方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从Python编辑器中也可调用编译器以及与它拥有的共用的程序,这样的话程序员就无需离开编辑器就可...
    99+
    2023-06-17
  • 编程中的编译和解释有什么区别
    本篇内容介绍了“编程中的编译和解释有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、编译是将源程序翻译成可执行的目标代码;解...
    99+
    2023-06-20
  • c#编译器是用什么编写的
    c# 编译器是用 c# 和 f# 编写的。它由负责解析源代码的前端(c#)、进行语义分析的中间端(c#)和将 ast 编译为 il 的后端(f#)组成。 C# 编译器是用什么编写的? ...
    99+
    2024-04-04
    c++ c#
  • sql server 中编译与重编译的区别是什么
    今天就跟大家聊聊有关sql server 中编译与重编译的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  执行计划重用的利弊  执行计划...
    99+
    2024-04-02
  • Golang中编译器的原理是什么
    本篇文章给大家分享的是有关Golang中编译器的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先先来认识以下go的代码源文件分类&...
    99+
    2024-04-02
  • C#编译器有什么作用
    本篇内容介绍了“C#编译器有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!据Marek Safar称,通过使用一种名为类型推断(ty...
    99+
    2023-06-17
  • java是用什么编译器
    JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。java程序开发人员,可以的选择集成开发环境IDE(Integrated Development Environment)非常多 ...
    99+
    2020-09-12
    java教程 java
  • Linux中的python编译器怎么用
    本篇内容主要讲解“Linux中的python编译器怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的python编译器怎么用”吧!1. PyCharmPyCharm是一个功能强大...
    99+
    2023-06-28
  • Python解释器是什么_Python解释器介绍
    1、首先当我们写完python代码后,就需要一个解释器去执行python代码最常用的python解释器:cpython(classicpython,也就是原始的python实现,需要区别...
    99+
    2024-04-02
  • javascript的解释器有什么作用
    这篇文章主要介绍“javascript的解释器有什么作用”,在日常操作中,相信很多人在javascript的解释器有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ja...
    99+
    2024-04-02
  • Python代码中编译指的是什么
    这篇文章将为大家详细讲解有关Python代码中编译指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
  • 「译」Graal JIT编译器是如何工作的
    JIT编译器是什么 我敢说很多读者都知道JIT编译器是什么,但是我还是会覆盖基本概念,让在场各位都没有基础上的疑问。 当你运行javac命令,或者用IDE保存的时候就做编译,你的java程序会从java代码编译成JVM字节码。JVM字...
    99+
    2014-09-21
    「译」Graal JIT编译器是如何工作的
  • kotlin编译器的原理是什么
    Kotlin编译器的原理是将Kotlin源代码转换为可执行的目标代码。具体来说,Kotlin编译器分为三个主要的阶段:1. 词法分析...
    99+
    2023-09-15
    kotlin
  • C++编译器的使用方法是什么
    这篇文章主要介绍“C++编译器的使用方法是什么”,在日常操作中,相信很多人在C++编译器的使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++编译器的使用方法是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • Python 动态编译器PyPy对比其他动态编译器的优点是什么
    这期内容当中小编将会给大家带来有关Python 动态编译器PyPy对比其他动态编译器的优点是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。该项目的目标是,让PyPy比C实现的Python更为容易的适应...
    99+
    2023-06-17
  • JavaScript中什么是解释器
    今天就跟大家聊聊有关JavaScript中什么是解释器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称...
    99+
    2023-06-14
  • Python动态编译器中PyPy比C在操作中更容易的原因是什么
    今天就跟大家聊聊有关Python动态编译器中PyPy比C在操作中更容易的原因是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python 语言的动态编译器有很多种,在实际相关应用...
    99+
    2023-06-17
  • python中修饰器的作用是什么
    今天就跟大家聊聊有关python中修饰器的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrap...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作