为什么不能在python 3中导入python 2模块?

时间:2014-01-01 02:03:03

标签: python module encapsulation

是否有任何理论上的理由阻止了这一点?据我所知,python模块可以用C编写?你不能在python 3中调用python 2中编写的函数的原因是什么?

1 个答案:

答案 0 :(得分:1)

在某些情况下,如果代码是纯Python 编写的,则可以兼容Python 2和Python 3。

在许多情况下你不能,因为它们是不同的语言,所以为一个编写的代码不一定是另一个有效的代码。

Python是解释的,而不是编译的,因此每当您使用该模块时都必须运行实际的源代码。没有任何东西与Java的编译形式相对应。如果Python模块的源代码不能与新的Python一起使用,那么您的模块将无法工作。

(有一个字节码编译形式的Python,但与Java VM不同,它不是一个稳定的指定目标,所以字节码解释器可能会从一个版本的Python改为另一个版本,就像语言可能一样。请参阅{{3程序员StackExchange上的。)

我不明白C模块的问题在这里是如何相关的。用C语言编写的Python模块即使对于不同版本的Python 2也必须重新编译。