【问题标题】:How / Where can I learn what's happening "under the hood" in Python如何/在哪里可以了解 Python 中“幕后”发生的事情
【发布时间】:2021-03-16 16:52:14
【问题描述】:

我目前主要用 Python 开发东西,我用 Python 编码很多,我慢慢开始怀疑:“在 Python 的底层到底发生了什么?”,我知道 Python 的代码被转换为二进制然后被处理的代码,但是当我创建一个具有值的变量时,我在哪里可以真正找出发生了什么,如何表示一个值,它存储在哪里,它是如何存储的?代码是如何转换的?布尔值如何工作,如何修改字节?等等。告诉计算机要做什么就像向计算机解释你的 cmets,但是计算机是如何处理所有这些的呢?

我在哪里/如何了解 Python 或我的计算机的总体工作原理(在引擎盖下查看)?我想了解更多关于真正发生的事情,希望我能成为一个更好的程序员。

【问题讨论】:

  • “我知道 Python 的代码被转换为二进制代码,然后被处理”:这高度依赖于 Python 的实现。在 CPython 中,它被翻译成字节码(但不是真正的机器码),然后该字节码在 Python 解释器中运行。对于CPython,请参考来源。对于另一个实现,请参考他们的源/文档。
  • CPython中的实际解读,可以开始here;虽然它是相当密集阅读。另外,使用dis 模块查看生成的字节码。

标签: python byte computer-science bytecode


【解决方案1】:
【解决方案2】:

如果您想查看用 Python 编写的字节码解释器,请查看 x-python。甚至还有一个gdb (or pdb)-like debugger,它允许您执行 Python 语句或字节码指令。

它支持字节码回到 Python 2.4 左右,但解释器在 3.5 和更早的操作码左右最完整。

对于那些想要使用这个项目来增加对字节码的理解以能够填补空白的人来说,这可以被视为一个功能 :-)

它基于 Ned Batchelder 的 byterun。

注意:这两个项目都没有将解释器环境与被解释的字节码完全隔离开来。但出于教程目的,这应该不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多