当前位置: 首页 > 面试题库 >

Python与Cpython

焦驰
2023-03-14
问题内容

关于Python和CPython (Jython,IronPython) 的所有这些大惊小怪,我不明白:

python.org提到CPython是:

Python的“传统”实现(绰号为CPython)

另一个堆栈溢出问题提到:

CPython是Python的默认字节码解释器,它是用C编写的。

老实说,我并没有理解这两种解释的实际含义,但是我认为,
如果我使用CPython,这意味着当我运行示例python代码时,它将其编译为C语言,然后像执行C语言一样执行它码

那么CPython到底是什么?与python相比,它有什么区别?我应该在Python上使用CPython吗?如果有,它的优点是什么?


问题答案:

那么CPython是什么?

CPython是 原始的
Python实现。它是您从Python.org下载的实现。人们称它为CPython是为了将其与其他后来的Python实现区分开来,并将语言引擎的实现与Python
编程语言 本身区分开来。

后面的部分是您困惑的来源。您需要将Python语言与 运行 Python代码的代码分开。

CPython 恰好 是用C实现的。实际上,这只是实现细节。CPython将您的Python代码(透明地)编译为字节码,并在评估循环中解释该字节码。

CPython也是第一个实现新功能的人。Python语言开发使用CPython作为基础;其他实现如下。

Jython等如何?

Jython,IronPython和PyPy是Python编程语言的当前“其他”实现。它们分别用Java,C#和RPython(Python的子集)实现。Jython将您的Python代码编译为
Java 字节码,因此您的Python代码可以在JVM上运行。IronPython使您可以在Microsoft
CLR上运行Python
。而且,PyPy(在Python(的一部分)中实现)使您比CPython更快地运行Python代码,这应该引起您的注意。:-)

实际编译为C

因此,CPython本身 不会 将您的Python代码转换为C。而是运行解释器循环。还有 一个项目
翻译的Python上下的代码转换为C,而被称为用Cython。用Cython增加了一些扩展Python语言,并让您编译代码,以C扩展,代码插头
CPython的解释。



 类似资料:
  • 本文向大家介绍Python与Ruby,包括了Python与Ruby的使用技巧和注意事项,需要的朋友参考一下 让我们看看Python和Ruby之间的主要区别。 Python Ruby 它支持书写功能 它不支持书写功能 Web框架,例如Django,Flask,Bottle等。, Web框架,例如Ruby on Rail,Hanami,Sinatra等, Python不支持mixins Ruby支持m

  • 首先要明确的是处理面向对象,还有很多编程语言范式,Python 本身就是一个支持面相对象和函数式编程的多范式编程语言。 编程范式的存在是为了解决的代码复用和共享问题。 JavaScript 主要是一门面向原型的编程语言,但是吸收了众多函数式编程的思想,却缺乏常见的函数式编程基础功能。 const 与常量 在 ES5 及之前的规范中,JS 声明对象时只能使用 var,ES6 中新增了 const 和

  • 问题内容: 我今天刚刚与一些同事讨论了python的db-api fetchone vs fetchmany vs fetchall。 我确定每个应用程序的用例都取决于我正在使用的db-api的实现,但是总的来说,fetchone,fetchmany,fetchall的用例是什么? 换句话说,以下等效项是什么?还是其中之一比其他人更受青睐?如果是这样,在哪些情况下? 问题答案: 我认为这确实取决于

  • 问题内容: 我似乎很难解决这个问题。 和之间有什么区别? 说我有一个不带tzinfo的附件,两个不应该给出相同的输出吗?难道它们都没有给出从纪元到传递的日期之间的秒数吗?而且由于通过的日期没有tzinfo,所以秒数不一样吗? 问题答案: 假定传递的元组在本地时间,假定在GMT / UTC中。根据解释,元组表示不同的时间,因此函数返回不同的值(由于历元是基于UTC的秒数)。 值之间的差异应等于您当地

  • 问题内容: 我想在我的多线程Python应用程序中定期执行操作。我已经看到了两种不同的方法 要么 一种方法比另一种方法有优势吗?是使用更少的资源还是与其他线程和GIL更好地协作?哪一个使我的应用程序中的其余线程响应更快? (假设有一些外部事件集或,我愿意在关闭时等待完整的延迟) 问题答案: 使用将具有更高的响应速度,因为在设置时,您将立即退出while循环。使用,即使在设置了事件之后,您也将在通话

  • 问题内容: 如果我使用MySQLdb通过Python连接到MySQL-Server。我创建一个和这样的: 完成MySQL处理后,应关闭。现在我在想:通过执行以下操作是否足以关闭: 还是我必须先关闭然后再关闭?像这样: 问题答案: 使用,此工具可让您创建一个临时游标,一旦返回上一个缩进级别,该游标将关闭。