首页 > 编程知识 正文

python是不是解释型语言,python语言变量命名规则

时间:2023-05-06 11:04:13 阅读:20968 作者:513

来源:网络https://nedbatchelder.com//blog/201803/is _ python _ interpreted _ or _ compiled _ yes.html

翻译整理: Tenger

一个常见的问题是:“Python是说明性的还是编译性的? ”。 通常,考虑这个问题的人有一个简单的模型。 而且通常更复杂。

在简单模型中,“编译”是指将高级语言转换为包含机器代码(CPU指令)的二进制可执行文件。 怡安编译c程序时会怎么样? 因此,操作系统可以直接运行此文件(Linux )。

在“解释”的简单定义中,运行程序意味着每次都读取源文件(即,在运行时编译为计算机识别的语言,而不是预编译),然后照做。 这是一些“炮弹式”的机制。

但是,现实世界并不那么有限。 要使一种语言有用而有力,必须考虑各种执行环境。 编译是用一种语言(或形式)编写程序,然后将其转换为另一种语言或形式的更常见的想法。 源语言通常是比目标语言更高级的语言,例如从c转换为机器语言。 但是,也有例外,例如从JavaScript 8到JavaScript 5的转换是编译。

在Python中,源代码编译为一种称为更简单字节码的形式。 这些指令类似于CPU指令,但不是由称为“虚拟机”的软件运行的CPU指令。 (这些不是模拟整个操作系统的虚拟机,而是简化的CPU运行环境。 )

以下是一个短Python函数和字节码的示例。

Python标准库中的dis模块是可以显示Python字节码的反汇编器。 这也是字节码本身最好的(但不太好)文档。 如果你想知道更多关于Python字节码的工作原理,关于字节码的讨论会有很多。 运行字节码的软件可以用任何语言编写。 byterun是Python (的一种实现只用于教学练习。

Python编译字节码的一个重要方面是不需要自己手动编译。 不会调用编译器。 只需运行. py文件。 Python实现根据需要编译文件。 这与Java不同。 例如,要将Java源代码转换为编译的类文件,必须运行Java编译器。 因此,Java通常被称为编译语言,而Python被称为说明语言。 但是,它们都编译成字节码,并在虚拟机的软件实现中执行字节码。

另一个重要的Python功能是它的交互式提示。 可以输入Python语句并立即执行。 此交互性通常在编译语言中会丢失,但在Python交互式提示中,Python也会编译为字节码并执行字节码。 由于此即时运行和Python没有明确的编译步骤,因此Python可执行文件被称为“Python解释器”。

顺便说一下,即使这些是关于这些语言是如何工作的简单说明。 “编译”语言(如Java和c )提供交互式提示,但不像Python那样位于这些世界的中心。 Java最初总是编译成字节码,但后来开发了即时(JIT )技术,以便在运行时编译成机器语言。 现在,Java有时也完全按照c样式编译成机器语言。

这表明“说明”和“编译性”两个词是多么不可靠。 虽然看起来像黑白区分,就像适用于大多数编程语言的形容词一样,但实际上更微妙和复杂。

最后,程序如何运行并不是语言的特点之一。 是关于语言的实现。 我一直在谈论Python,这实际上是CPython的描述,这是Python的常见实现。 因为是用c语言编写的,所以命名为. PyPy是另一种实现,它使用JIT编译器,速度比CPython快。

那么,Python是编译性的吗? 是。 还是说明性的? 是。 对不起,这个世界很复杂.

建议您阅读

得到更多的干货!

如果您有任何问题,请在评论中讨论。

按一下

阅读原文

多看干货!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。