返回介绍

19.1 Python 字节码

发布于 2024-10-11 21:05:47 字数 1100 浏览 0 评论 0 收藏 0

Python1 是一种面向对象的带注释的编程语言。通常,Python 以类似于 Perl 的方式编写脚本。Python 源文件常使用.py 扩展名保存。任何时候执行 Python 脚本,Python 解释器将把源代码编译成名为 Python 字节码2 的内部表示形式。这种字节码最终将由一个虚拟机解释。在某种程度上,整个过程类似于将 Java 源代码编译成 Java 字节码,后者最终由 Java 虚拟机执行。它们之间的主要不同在于,Java 用户必须将它们的 Java 源代码显式编译成 Java 字节码,而每次用户选择执行一段 Python 脚本时 Python 源代码必须隐式转换成字节码。

1. 参见 http://www.python.org/
2. 参见 http://docs.python.org/library/dis.html#bytecodes 了解 Python 字节码指令及其意义。请参见 Python 源代码发行版中的 opcode.h 文件了解字节码助记符及其对应的操作码。

为了避免重复将 Python 源代码转换成 Python 字节码,Python 解释器可以将 Python 源文件的字节码形式保存在一个.pyc 文件中,并在随后的执行过程中加载这个文件,从而节省在转换 Python 源代码上花费的时间。通常,用户并不会显式创建.pyc 文件。相反,Python 解释器会自动为由另一个 Python 源模块导入的任何 Python 源模块创建.pyc 文件。理论上,这些模块会不断被重复利用,因此,如果你能够立即获得这些模块的字节码形式,将能够节省大量时间。Python 字节码(.pyc )文件基本上等同于 Java 的.class 文件。

如果存在与源代码对应的字节码文件,Python 解释器就不需要使用源代码。因此,我们能够以字节码而非源代码的形式发布一个 Python 项目的某些部分。这时,就像处理其他发行版的二进制软件那样,逆向工程字节码文件以了解它们的作用,可能会有所用处。这也是示例 Python 处理器模块的主要用途——提供一个有助于逆向工程 Python 字节码的工具。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文