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

Zor*_*orf 5 python encapsulation module

有任何理论上的原因可以阻止这种情况吗?据我所知python模块可以用C编写吗?为什么无法在python 3中调用用python 2编写的函数的原因是什么?

Bre*_*arn 2

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

在许多情况下,您不能这样做,因为它们是不同的语言,因此为一种语言编写的代码不一定在另一种语言中有效。

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

(Python 有一种字节码编译形式,但与 Java VM 不同,它不是一个稳定的、指定的目标,因此字节码解释器可能会像语言一样从一个版本的 Python 更改为另一个版本。请参阅Programmers StackExchange 上的这个问题。 )

我不明白 C 模块的问题与这里有什么关系。即使对于不同版本的 Python 2,用 C 编写的 Python 模块也必须重新编译。