python需要编译器编译执行吗,python需要编译吗-

  python需要编译器编译执行吗,python需要编译吗?

  一个经常听到的问题是:Python是解释性语言吗?会编制吗?这个问题没有想象中那么好回答。他们和很多了解世界的人一样,习惯用一个简单的模型来判断事物。其实包含了很多很多的细节。

  一般来说,编译就是把一种高级语言变成CPU可以执行的机器代码。当你编译C时,你这样做。编译的结果是一个二进制的可执行文件,然后你的系统就可以直接运行这个程序了。

  相反,解释是这样的:程序运行时,每次读取源文件中的一行代码,执行相应的操作,如此逐行重复。当然,这就是所谓的脚本语言的工作原理。

  但实际上,上述定义有太多的局限性。一门真正的语言,为了拥有更有用更强大的特性,通常会采用各种实现。我们可以把编译理解为更一般的:把一种语言转换成另一种语言形式。一般来说,源语言比目标语言高级,比如把C转换成机器码。当然,从JavaScript 8到JavaScript 5的转换也是一种编译。

  在Python中,源代码会被编译为更低级的一种形式,我们称之为字节码.一个字节是一系列指令,类似于CPU的指令集。但是字节码不是直接由CPU执行,而是在虚拟机中执行。当然,这里的虚拟机并没有模仿整个操作系统环境,只是提供了一个字节码执行的环境。

  让我们看一小段Python代码及其对应的字节码。

  看了字节码的内容,我们知道F . 的运算原理,格式字符串,就是把里面的字符串转换成一系列文字字符串和变量,然后用符号连接起来。

  Dis Python标准库反汇编模块,可以显示Python代码的字节码信息。上面提到的执行字节码的虚拟机可以用任何语言实现,包括Python本身。有兴趣的可以去GitHub看看这个项目nedbat/byterun。这个项目可以用于学习,但是不适合生产环境。

  然而,当我们运行Python时,却完全感受不到它的编译过程。不需要调用编译器,只需简单地执行。py文件,编译时需要时自动编译。这和JAVA不一样。每次编写要执行的JAVA代码,都要手动编译成. class文件,然后执行。正是因为这个原因,JAVA被称为编译语言,而Python被称为解释语言。然而,实际上这两种语言都被编译成字节码,然后交给虚拟机执行。

  Python的另一个重要特性是交互式命令行。您可以输入Python语句,然后按enter键立即执行。事实上,即使在这个过程中,Python也是先转换成字节码再执行的。这种交互式命令行特性在许多编译语言中都找不到。因为也没有显示调用编译器,所以许多人将执行Python源文件的程序称为Python解释器。

  哪怕很简短,也要补充。一些编译语言如C或JAVA也有交互式命令行,但这些不是这些语言的重点。起初,JAVA被编译成字节码,然后执行。后来的即时编译技术(JIT)可以直接编译成机器码,类似于c。

  从上面的描述可以看出,无论是解释还是编译都不能完全分开。很多时候,我们想用一些词来对现有的编程语言进行分类,但实际上要做到这一点太难了。

  最后,代码如何执行只是语言实现的问题,与语言特性无关。在上面,我们讨论了Python,但它实际上是CPython的描述。CPython是一个解释器,之所以这么叫是因为这个解释器是用C编写的,这也是Python的默认解释器。当然,还有很多其他的解释者。比如PyPy是另一个解释器,使用JIT技术,运行速度比CPython快。

  回到题目中的问题,Python之所以被称为解释性语言,是因为它没有展示调用和编译操作,而是展示了更多的解释性特征。但实际上,编制是存在的。如何编译取决于语言的实现,也就是解释器的设计。

  更多Python相关技术文章,请访问Python教程专栏学习!以上是python需要编译的详细内容。更多信息请关注盛行IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: