Python即是解释型语言,也是编译型语言

【python教程入门学习】编译型语言和解释型语言的区别 我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。 所谓的二进制指令,也就是机器码,是 CPU 能够识别的硬件层面的“代码”,简陋的硬件(比如古老的单片机)只能使用几十个指令,强大的硬件(PC 和智能手机)能使用成百上千个指令。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令 阅读详情


在这里插入图片描述

不知道有没有小伙伴跟我一样,刚开始学习 Python 的时候都听说过 Python 是一种解释型语言,因为它在运行的时候会逐行解释并执行,而 C++ 这种是编译型语言

不过我今天看到了一篇文章,作者提出 Python 其实也有编译的过程,解释器会先编译再执行

不但如此,作者还认为【解释】与【编译】是错误的二分法、限制了编程语言的可能性。Python 既是解释型语言,也是编译型语言!

本文文字干货较多,耐心看完相信你会有不小的收获

原文:https://eddieantonio.ca/blog/2023/10/25/python-is-a-compiled-language/

前言

本文所说的 Python ,不是指 PyPy、Mypyc、Numba、Cinder 等 Python 的替代版本,也不是像 Cython、Codon、mojo1这样的类 Python 编程语言

我指的是常规的 Python——CPython

目前,我正在编写一份教材,教学生如何阅读和理解程序报错信息(programming error messages)。我们正在为三种编程语言(C、Python、Java)开设课程

程序报错信息的本质的关键点之一在于程序报错是在不同阶段生成的,有些是在编译时生成,有些是在运行时生成

第一门课是针对 C 语言的,具体来说是如何使用 GCC 编译器,以及演示 GCC 如何将代码转换成可执行程序

  • 预处理(preprocessing)
  • 词汇分析(lexical analysis)
  • 语法分析(syntactic analysis)
  • 语义分析(semantic analysis)
  • 链接(linking)

除此之外,这节课还讨论了在上述阶段可能出现的程序报错,以及这些报错将如何影响所呈现的错误消息。重要的是:早期阶段的错误将阻止在后期阶段检测到错误(也就是说 A 阶段的报错出现之后,B 阶段就算有错误也不会检测出来)

当我将这门课调整成针对 Java 和 Python 时,我发现 Python 和 Java 都没有预处理器(preprocessor),并且 Python 和 Java 的链接(linking)不是同一个概念

我忽略了上面这些变化,但是我偶然发现了一个有趣的现象:

编译器在各个阶段会生成报错信息,而且编译器通常会在继续执行之前把前面阶段的报错显示出来,这就意味着我们可以通过在程序中故意创建错误来发现编译器的各个阶段

所以让我们玩一个小游戏来发现 Python 解释器的各个阶段

Which Is The First Error

我们将创建一个包含多个 bug 的 Python 程序,每个 bug 都试图引发不同类型的报错信息

我们知道常规的 Python 每次运行只会报告一个错误,所以这个游戏就是——哪条报错会被首先触发

# 下面是有 bug 的程序
1 / 0
print() = None
if False
    ñ = "hello

每行代码都会产生不同的报错:

  • 1 / 0 将生成 ZeroDivisionError: division by zero
  • print() = None 将生成 SyntaxError: cannot assign to function call
  • if False 将生成 SyntaxError: expected ':' .
  • ñ = "hello 将生成 SyntaxError: EOL while scanning string literal .

问题在于,哪个错误会先被显示出来?需要注意的是:Python 版本很重要(比我想象的要重要),所以如果你看到不同的结果,请记住这一点

PS:下面运行代码所使用的 Python 版本为 Python 3.12

在开始执行代码之前,先想想【解释】语言和【编译】语言对你来说意味着什么?

下面我将给出一段苏格拉底式的对话,希望你能反思一下其中的区别

苏格拉底:编译语言是指代码在运行之前首先通过编译器的语言。一个例子是 C 编程语言。要运行 C 代码,首先必须运行像 or clang 这样的 gcc 编译器,然后才能运行代码。编译后的语言被转换为机器代码,即 CPU 可以理解的 1 和 0。

柏拉图:等等,Java不是一种编译语言吗?

苏格拉底:是的,Java是一种编译语言。

柏拉图:但是常规 Java编译器的输出不是一个 .class 文件。那是字节码,不是吗?

苏格拉底:没错。字节码不是机器码,但 Java 仍然是一种编译语言。这是因为编译器可以捕获许多问题,因此您需要在程序开始运行之前更正错误。

柏拉图:解释型语言呢?

苏格拉底:解释型语言是依赖于一个单独的程序(恰如其分地称为解释器)来实际运行代码的语言。解释型语言不需要程序员先运行编译器。因此,在程序运行时,您犯的任何错误都会被捕获。Python 是一种解释型语言,没有单独的编译器,您犯的所有错误都会在运行时捕获。

柏拉图:如果 Python不是一种编译语言,那么为什么标准库包含名为 py_compile and compileall 的模块?

苏格拉底:嗯,这些模块只是将 Python转换为字节码。他们不会将 Python 转换为机器代码,因此 Python 仍然是一种解释型语言。

柏拉图:那么,Python和 Java都转换为字节码了吗?

苏格拉底:对。

柏拉图:那么,为什么Python是一种解释型语言,而 Java却是一种编译型语言呢?

苏格拉底:因为 Python 中的所有错误都是在运行时捕获的。 (ps:请注意这句话)

  • 回合一

当我们执行上面那段有 bug 的程序时,将会收到下面的错误

  File "/private/tmp/round_1.py", line 4
    ñ = "hello  # SyntaxError: EOL while scanning string literal
        ^
SyntaxError: unterminated string literal (detected at line 4)

检测到的第一个报错位于源码的最后一行。可以看到:在运行第一行代码之前,Python 必须读取整个源码文件

如果你脑子里有一个关于【解释型语言】的定义,其中包括”解释型语言按顺序读取代码,一次运行一行”,我希望你忘掉它

我还没有深入研究 CPython 解释器的源码来验证这一点,但我认为这是第一个检测到的报错的原因是 Python 3.12 所做的第一个步骤是扫描(scanning ),也称为词法分析

扫描器将整个文件转换为一系列标记(token),然后继续进行下一阶段。

扫描器扫描到源码最后一行的字符串字面值末尾少了个引号,它希望把整个字符串字面值转换成一个 token ,但是没有结束引号它就转换不了

在 Python 3.12 中,扫描器首先运行,所以这也是为什么第一个报错是unterminated string literal

  • 回合二

我们把第四行的代码的 bug 修复好,第 1 2 3 行仍有 bug

1 / 0
print() = None
if False
    ñ = "hello"

我们现在来执行代码,看下哪个是第一个报错

File "/private/tmp/round_2.py", line 2
    print() = None
    ^^^^^^^
SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='?"

这次是第二行报错!同样,我没有去查看 CPython 的源码,但是我有理由确定扫描的下一阶段是解析(parsing),也称为语法分析

在运行代码之前会先解析源码,这意味着 Python 不会看到第一行的错误,而是在第二行报错

我要指出我为这个小游戏而编写的代码是完全没有意义的,并且对于如何修复 bug 也没有正确的答案。我的目的纯粹是估计编写错误然后发现 python 解释器现在处在哪个阶段

我不知道 print() = None可能是什么意思,所以我将通过将其替换为print(None)来解决这个问题,这也没有意义,但至少它在语法上是正确的。

  • 回合三

我们把第二行的语法错误也修复了,但源码还有另外两个错误,其中一个也是语法错误

1 / 0
print(None)
if False
    ñ = "hello"

回想一下,语法错误在回合二的时候优先显示了出来,在回合三还会一样吗

  File "/private/tmp/round_3.py", line 3
    if False
            ^
SyntaxError: expected ':'

没错!第三行的语法错误优先于第一行的错误

正如回合二一样,Python 解释器在运行代码之前会先解析源码,对其进行语法分析

这意味着 Python 不会看到第一行的错误,而是在第三行报错

你可能想知道为什么我在一个文件中插入了两个 SyntaxError,难道一个还不够表明我的观点吗?

这是因为 Python 版本的不同会导致结果的不同,如果你在 Python3.8 或者更早的版本去运行代码,那么结果如下

在 Python 3.8 中,第 2 轮报告的第一个错误消息位于第 3 行:

1 / 0
print() = None
if False
    ñ = "hello"
  
# 报错
File "round_2.py", line 3
    if False
            ^
SyntaxError: invalid syntax

修复第三行的错误之后,Python 3.8 在第 2 行报告以下错误消息:

1 / 0
print() = None
if False:
    ñ = "hello"

# 报错
  File "round_3.py", line 2
    print() = None
    ^
SyntaxError: cannot assign to function call

为什么 Python 3.8 和 3.12 报错顺序不一样?是因为 Python 3.9 引入了一个新的解析器。这个解析器比以前的 naïve 解析器功能更强大

旧的解析器无法提前查看多个 token,这意味着旧解析器在技术上可以接受语法无效的 Python 程序

尤其是这种限制导致解析器无法识别赋值语句的左边是否为有效的赋值目标,好比下面这段代码,旧解析器能够接收下面的代码

[x for x in y] = [1,2,3]

上面这段代码没有任何意义,甚至 Python 语法是不允许这么使用的。为了解决这个问题,Python 曾经存在过一个独立的,hacky 的阶段(这个 hacky 我不知道用什么翻译比较好)

即 Python会检查所有的赋值语句,并确保赋值号左边实际上是可以被赋值的东西

而这个阶段是发生在解析之后,这也就是为什么旧版本 Python 中会先把第二行的报错先显示出来

  • 回合四

现在还剩最后一个错误了

1 / 0
print(None)
if False:
    ñ = "hello"

我们来运行一下

Traceback (most recent call last):
  File "/private/tmp/round_4.py", line 1, in <module>
    1 / 0
    ~~^~~
ZeroDivisionError: division by zero

需要注意的是,Traceback (most recent call last)表示 Python 运行时报错的主要内容,这里在回合四才出现

经过前面的扫描、解析阶段,Python 终于能够运行代码了。但是当 Python 开始运行解释第一行的时候,引发一个名为 ZeroDivisionError 的报错

为什么知道现在处于【运行时】,因为 Python 已经打印出 Traceback (most recent call last),这表示我们有一个堆栈跟踪

堆栈跟踪只能在运行时存在,这意味着这个报错必须在运行时捕获。

但这意味着在回合1~3 中遇到的报错不是运行时报错,那它们是什么报错?

Python 既是一种编译语言,也是一种解释语言

没错!CPython 解释器实际上是一个解释器,但它也是一个编译器

我希望上面的练习已经说明了 Python 在运行第一行代码之前必须经过几个阶段:

  • 扫描(scanning )
  • 解析(parsing )

旧版本的 Python 多了一个额外阶段:

  • 扫描(scanning )
  • 解析(parsing )
  • 检查有效的分配目标(checking for valid assignment targets)

让我们将其与前面编译 C 程序的阶段进行比较:

  • 预处理
  • 词汇分析(“扫描”的另一个术语)
  • 语法分析(“解析”的另一个术语)
  • 语义分析
  • 链接

Python 在运行任何代码之前仍然执行一些编译阶段,就像 Java一样,它会把源码编译成字节码

前面三个报错是 Python 在编译阶段产生的,只有最后一个才是在运行时产生,即ZeroDivisionError: division by zero.

实际上,我们可以使用命令行上的 compileall 模块预先编译所有 Python 代码:

$ python3 -m compileall

这会将当前目录中所有 Python 文件的编译字节码放入其中 __pycache__/ ,并显示任何编译器错误

只有在 Python 被编译为字节码之后,解释器才会真正启动,我希望前面的练习已经证明 Python 确实可以在运行时之前报错

编译语言与解释语言是错误的二分法

每当一种编程语言被归类为【编译】或【解释】语言时,我都会感到很讨厌。一种语言本身不是编译或解释的

一种语言是编译还是解释(或两者兼而有之!)是一个实现细节

我不是唯一一个有这种想法的人。Laurie Tratt 有一篇精彩的文章,通过编写一个逐渐成为优化编译器的解释器来论证这一点

文章地址:https://tratt.net/laurie/blog/2023/compiled_and_interpreted_languages_two_ways_of_saying_tomato.html

还有一篇文章就是 Bob Nystrom 的 Crafting Interpreters。以下是第 2 章的一些引述:

编译器和解释器有什么区别?

事实证明,这就像问水果和蔬菜之间的区别一样。这似乎是一个二元的非此即彼的选择,但实际上“水果”是一个植物学术语,而“蔬菜”是烹饪学术语。

严格来说,一个并不意味着对另一个的否定。有些水果不是蔬菜(苹果),有些蔬菜不是水果(胡萝卜),但也有既是水果又是蔬菜的可食用植物,如西红柿

当你使用 CPython 来运行 Python 程序时,源码会被解析并转换成内部字节码格式,然后在虚拟机中执行

从用户的角度来看,这显然是一个解释器(因为它们从源码运行程序),但如果你仔细观察 CPython(Python 也可译作蟒蛇)的鳞状表皮(scaly skin),你会发现它肯定在进行编译

答案是:CPython 是一个解释器,它有一个编译器

那么为什么这很重要呢?为什么在【编译】和【解释】语言之间做出严格的区分会适得其反?

【编译】与【解释】限制了我们认为编程语言的可能性

编程语言不必由它是编译还是解释来定义的!以这种僵化的方式思考限制了我们认为给定的编程语言可以做的事情

例如,JavaScript 通常被归入“解释型语言”类别。但有一段时间,在 Google Chrome 中运行的 JavaScript 永远不会被解释——相反,JavaScript 被直接编译为机器代码!因此,JavaScript 可以跟上 C++ 的步伐

出于这个原因,我真的厌倦了那些说解释型语言必然慢的论点——性能是多方面的,并且不仅仅取决于"默认"编程语言的实现

JavaScript 现在很快了、Ruby 现在很快了、Lua 已经快了一段时间了

那对于通常被标记为编译型语言的编程语言呢?(例如 C)你是不会去想着解释 C 语言程序的

语言之间真正的区别

语言之间真正的区别:【静态】还是【动态】

我们应该教给学生的真正区别是语言特性的区别,前者可以静态地确定,即只盯着代码而不运行代码,后者只能在运行时动态地知道

需要注意的是,我说的是【语言特性】而不是【语言】,每种编程语言都选择自己的一组属性,这些属性可以静态地或动态地确定,并结合在一起,这使得语言更“动态”或更“静态”

静态与动态是一个范围,Python 位于范围中更动态的一端。像 Java 这样的语言比 Python 有更多的静态特性,但即使是 Java 也包括反射之类的东西,这无疑是一种动态特性

我发现动态与静态经常被混为一谈,编译与解释混为一谈,这是可以理解的

因为通常使用解释器的语言具有更多的动态特性,如 Python、Ruby 和 JavaScript

具有更多静态特性的语言往往在没有解释器的情况下实现,例如 C++ 和 Rust

然后是介于两者之间的 Java

Python 中的静态类型注释已经逐渐(呵呵)在代码库中得到采用,其中一个期望是:由于更多静态的东西,这可以解锁 Python 代码中的性能优势

不幸的是,事实证明,Python 中的类型(是的,只是一般类型,考虑元类)和注释本身都是Python 的动态特性,这使得静态类型不是大伙所期望的性能优势

最后总结一下:

  • CPython 是一个解释器,它有一个编译器(或者说 Python 既是解释型语言,也是编译型语言)
  • Python 是编译的还是解释的并不重要。重要的是,相对于那些具有更多静态属性(在编译或解释阶段可以在运行前确定的属性)的编程语言,Python 中可以在运行前确定的属性相对较少,这意味着在 Python 中,许多属性是在运行时动态确定的,而不是在编译或解释时静态确定的
  • 由于 Python 具有较少的静态属性,这意味着在运行时,某些错误可能只能在运行时才会显现,而不是在编译或解释时就能被发现
  • 因为在具有更多静态属性的编程语言中,许多错误会在编译或解释时被捕获,因此更容易在编码阶段就发现和修复
  • 这是真正重要的区别,这是一个比【编译】和【解释】更细致、更微妙的区别。出于这个原因,我认为强调特定的静态和动态特性是很重要的,而不是一昧的局限于“解释型”和“编译型”语言之间的繁琐的区别。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,希望提供给想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以保存图片微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

Python是解释型语言还是编译型语言? 尽管Python是解释型语言,但它也可以通过一些工具将源代码编译为字节码形式,以提高执行效率。当你运行一个Python脚本时,解释器会首先检查是否存在对应的字节码文件,如果存在且未过期,则会直接加载字节码文件以加快执行速度。你可以编写一段Python代码,然后在不同的操作系统上运行,只需在相应的操作系统上安装Python解释器即可。Python是一种解释型语言。解释型语言是指在运行程序时,逐行解释并执行源代码,而不需要显式的编译过程。下面我将详细解释Python解释型语言的特点,并提供一些示例代码来说明。 阅读详情

相关推荐

编译型语言与解释型语言:Python

编译型语言需要在运行之前将源代码转换为机器代码,而解释型语言则在运行时逐行解释执行代码。然而,与编译型语言相比,解释型语言的执行速度可能较慢。在计算机编程中,编译型语言和解释型语言是两种不同的编程语言类型。Python 是一种解释型语言,这意味着 Python 代码在运行之前不需要编译,而是逐行解释执行。让我们来详细了解编译型语言和解释型语言的区别,并且通过一些示例代码来说明 Python 是如何解释执行的。与编译型语言相比,解释型语言的优点是更易于学习和使用。解释型语言是在运行时逐行解释执行的语言。

DarcyCode的博客 259

Python?Python!(python是解释型还是编译型)

前言:一个人,闲着没事,就喜欢胡思乱想,这一想就想出了很多东西,因此就充满了疑问,这又是一个百度的下午。看了很多篇博文,思路始终很是凌乱,不知道怎么写,有些内容看完就忘记了,但是我还是要进自己最大的努力去把下午看过的内容进行总结,这样也不枉费这一下午百度的流量。如果您和我一样,对python的运行有一些疑惑那么请您仔细阅读这篇文章,我写了很久,虽然我不能保证看完您就对python底层的运行机制彻...

老司机开代码的博客 9573

TCNOpen实现TRDP通信协议(源码编译运行测试)

概述 本文介绍了通过TCNOpen开源源码实现TRDP通信,包括源码下载,开发环境搭建,编译运行,测试。 Linux环境下编译运行TRDP (一) 下载CANOpen源码。 下载地址:https://sourceforge.net/p/tcnopen/trdp/HEAD/tree/ (二) 源码编译 下载源码解压过后,在根目录文件readme-makefile.txt有介绍源码的配置和编译方法。 在trdp/config目录下可以看到包含在linux环境下的编译配置文件LINUX_config;执行”m

fengweibo112的博客 9631

python语言是编译型语言-编译型语言和解释型语言的区别

Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制。计算机程序,其实就是一组计算机指令的集合,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算机高级语言。高级语言允许使用自然语言(通常就是英语)来编程,但高级语言的程序最终必须被翻译成机器指令来执行。高级语言按照程序的执行方式,可以分为编译型和解释型两种。编译型语言编译型语言是指使用专门的...

weixin_37988176的博客 2234

华为OD机试真题 - 矩阵匹配 牛客网

2024华为OD机试真题,代码包含语言java、js、python、c 代码基本都有详细注释。 题目描述 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式: N M K N*M矩阵 输出描述 N*M 的矩阵中可以选出 M! / N! 种组合数组,每个组合数组种第 K 大的数中的最小值。无需考虑重复数字,直接取字典排序结果即可。

2301_76543445的博客 497

Dify 第 7 篇 Dify 应用介绍 + 聊天助手&Agent 应用关键点说明

本文介绍了Dify应用的核心概念与使用方法。Dify是基于大模型构建的实际场景应用,提供API、WebApp和易用界面。包含5种应用类型:聊天助手、文本生成、Agent、对话流和工作流。创建方式有模板创建、空白应用和DSL文件三种。重点讲解了聊天助手和Agent应用的关键功能:聊天助手支持提示词优化、知识库引用、文件处理等;Agent应用则强调推理能力、工具调用和任务自动化。文章还详细介绍了应用的调试、发布和管理工具,为开发者提供了全面的应用构建指南。

甘蓝的专栏 1882

python语句解释_什么是python语言的解释性?

计算机无法直接理解高级语言,只能理解机器语言,所以必须把高级语言翻译成机器语言,计算机才能理解。翻译有两种方法,一种是编译,另一种是解释。所谓的解释性语言主要包括两个方面:一是有自己的解释器;二是在其他的编译语言(通常是C语言)的基础上定义和扩充了自己的语法结构。解释性语言的工作原理就是用自己定义的解释器,解释并执行有自己定义的语法结构生成的程序代码。例如:一个用编译性语言如C或C++写的程序可以...

weixin_39867662的博客 303

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2946

Python语言概述 和 编译型语言与解释型语言

Python创始人吉多·范罗苏姆(Guido van Rossum) Python的设计哲学:优雅、简单、明确 1、Python简介 Python是一种面向对象、解释型、弱类型的脚本语言。是基于ABC教学语言 (ABC语言是专门为非专业程序员设计,是由吉多参加设计的一种教学语言,就吉多本人看来,ABC 这种语言非常优美和强大。但是 ABC 语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在 Python 中避免这一错误,并获取了非常好的效果) 解释型语言几乎是天然跨平台的 Java占..

weixin_42894555的博客 1009

Aurix TC3xx系列MCU ADC模块简介(一)

简单介绍英飞凌Aurix TC3xx系列单片机ADC模块的特点及内部结构。

m0_38045338的博客 6361

8-阿里云服务器 ECS配置R及Studio Server

步骤概览:(首先要明确自己的系统然后进行安装)

hx2024的博客 1570

Python的编译型语言和解释型语言

编译器和解释器其实就是一个“翻译工具”,对源代码进行“翻译”是一个很复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生成可执行文件等五个步骤,期间涉及到复杂的算法和硬件架构。

优快云_224022的博客 1032

基于STM32设计的智能门锁(微信小程序+手机APP等多种方式开锁)(188)

当前智能门锁项目是基于STM32微控制器、ESP8266-WIFI模块、OLED显示屏、指纹模块、蓝牙模块、门禁刷卡模块、烟雾检测模块、火光检测模块、温湿度检测模块等硬件设备开发的一种智能门锁系统

1万+

Python语言是编译型语言还是解释型语言?(Python程序执行过程)

Python语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Python是一种解释型语言 Python程序源码不需要编译,可以直接从源代码运行程序。Python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。 下面用一张图来解释这个过程: 当我们运行Python文...

菜鸟的后花园 3万+

CRMEB开源电商系统 /api/products SQL注入漏洞复现(CVE-2024-36837)

2024年6月,CRMEB开源电商系统发布了新补丁,修复了一处SQL注入漏洞(CVE-2024-36837)。经分析,该漏洞可以通过请求api的路径接口来进行SQL注入,进而可能导致敏感信息泄露,该注入可暴露后台web绝对路径,深入利用可获取服务器权限,该漏洞无前置条件且利用简单,建议受影响的用户尽快修复漏洞。

0xSec 2881

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python 从零开始 第二节 解释型语言与编译型语言

零基础学python 解释型语言与编译型语言

jp20080324的博客 1522

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C/C++、Java、Python谁是编译型语言,谁是解释型语言?

最近各大互联网公司线上笔试,编程题目里的编译器只支持C/C++、Java,甚至有的支持javaScrpit和Pascal,就是不支持Python。让一直以来用惯了Python的我直吐血,于是今天痛定思痛还是熟悉一下Java,免得继续被虐。学习的过程中,看到这样一个争论“Java、Python谁是编译型语言,谁是解释性语言?”。我在网上查了很多资料,也结合了自己的理解,下面与大家分享一下。 总的来说...

景山编程-顺道编程 7732

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python,java是什么型语言?解释型语言和编译型语言的区别

相信很多人第一次听到这两个概念的时候,都会摸不着头脑,什么叫编译型,什么又叫作解释型?为什么要有这两种类型区分?它们之间的区别又是什么?其实,编译型语言和解释型语言区分类别的根本方式在于源代码执行方式的执行方式,我们说的话,人类的语言,我们写的代码,机器并不能看懂,它们需要借助编译器的帮助,将高级程序语言,转换成二进制指令给计算机识别。

weixin_63583875的博客 586

Python 既是解释型语言,也是编译型语言

不知道有没有小伙伴跟我一样,刚开始学习 Python 的时候都听说过 Python 是一种解释型语言,因为它在运行的时候会逐行解释并执行,而 C++ 这种是编译型语言不过我今天看到了一篇文章,作者提出 Python 其实也有编译的过程,解释器会先编译再执行不但如此,作者还认为【解释】与【编译】是错误的二分法、限制了编程语言的可能性。本文文字较多,干货满满,耐心看完相信你会有不小的收获。

2301_78150559的博客 1398

测试面试必备:解释型语言Python和编译型语言的区别

编程语言按照执行方式主要分为两大类:**解释型语言**和**编译型语言**。Python作为典型的解释型语言,与Java、C++等编译型语言在工作原理和执行效率等方面有着显著差异。本文将详细探讨这两类语言的区别。

qq_58299462的博客 1029

python解释型语言的区别_编译型语言和解释型语言的区别

在说编译型语言和解释型语言的区别之前,我们先来了解一下什么是编程语言。其实,程序指的就是一系列的指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令。为了有效避开所有影响给计算机传递指令的因素,计算机科学家设计了一些符号,这些符号的各有其含意,且之间无二义性,通常称它为编程语言。我们编写的源代码是人类语言,我们自己能够轻松理解;但对于计算机硬件(CPU)源...

weixin_28884741的博客 336

python编译型语言和解释型语言

** python编译型语言和解释型语言 ** 1、大部分语言为编译型或解释型,如C/C++等为编译型,python为解释型语言; 2、编译型语言比解释型语言执行速度快; 3、编译型语言:由程序员在开发环境内,开发程序,开发完成后,放在编译器内编译,用户可直接执行使用,如:C语言,c++语言 4、解释型语言:一行一行代码执行,由上到下依次执行,如:python语言...

qq_39245526的博客 3640

解释型语言 Python 与编译型语言的深度对比:从原理到实践

解释型语言 Python 与编译型语言的深度对比:从原理到实践

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 2252

编译型语言和解释型语言的区别是什么呢?Python解释型语言比C++编译型语言多了Python虚拟机,Python虚拟机发挥的作用是什么呢?

编译型语言:类似于谷歌翻译软件,将整个源代码编译成独立的可执行文件,执行效率高,但跨平台性差,需要针对不同平台重新编译。解释型语言:类似于同声传译,逐行解释和执行源代码,开发效率高,具有很好的跨平台特性,但执行效率相对较低。Python虚拟机:在解释型语言中,Python虚拟机负责解释执行字节码,管理内存,并提供跨平台特性,使得Python代码可以在不同平台上运行。

weixin_43501408的博客 348

python编译型语言和解释型语言的区别_编译型和解释型语言的由来和区别

由来: 计算机底层只能识别(并执行)0、1序列的机器码,因此所有的语言要被计算机执行,最终都要以某种方式被转换成能被计算机识别的0、1序列机器码。这个翻译过程按照执行时间不同,分为编译型和解释型。区别:编译型语言:a)程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件.b)以后要运行的话就不用重新翻译,直接执行编译后的文件 .exe即可c)翻译成机器码只做一次,运行...

weixin_39662228的博客 438
上一篇: Python-matplotlib绘图及中文乱码问题
下一篇: selenium 知网爬虫之根据【关键词】获取文献信息
一秋的编程笔记
博客等级 码龄4年 1588粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值