Python理论上可以被“反编译”为C吗

5 投票
3 回答
571 浏览
提问于 2025-04-17 20:47

因为Python本身是用C语言写的,所以理论上有没有可能把任何Python程序“反编译”成C语言呢?这里说的不是翻译(翻译是把程序的意思用C语言重新写一遍,让它做同样的事情),而是真正的反编译(就是用一个程序找到每个Python操作对应的C语言函数,并且以正确的语法实现它们)。

3 个回答

-1

你可以去看看这个网站 https://code.google.com/p/py2c/,它可以帮你把Python代码转换成C语言代码。

0

当然可以把转成。解释器做的一些事情会在你的里体现出来。如果你把Python限制在RPython,这样做会简单很多。因为有些完整的Python特性不太好转化。不过我觉得这样做其实意义不大。

3

任何编程语言理论上都可以转换成其他编程语言。这种理论上的可能性并不意味着转换过程简单,或者现有的工具能否支持这种转换。

关于什么算是“反编译”也有些模糊。比如,我可以使用 boost::python,把一个Python程序作为字符串嵌入到C++程序中。这样,我就得到了一个与那个Python代码完全等价的C++程序。不过,这并不算是一个真正的转换。

有些事情是任何翻译工具都无法很好完成的:

if ask_user():
    a = 1
else:
    a = "hi"
print(a)

由于编译时类型的不明确性,任何等价的C程序都必须有一些复杂的数据结构来处理运行时的类型信息。

撰写回答