为什么有些Python标准库是用.py编写的呢?

为什么有些Python标准库是用.py编写的呢?,python,standard-library,.so,Python,Standard Library,.so,大多数标准库都是用Python.py文件编写的,但有些库在Unix上是用.so文件编写的,在Windows上是用.pyd文件编写的。例如,操作系统是用os.py编写的,而pyexpat是用pyexpat.cpython-36m-darwin.so编写的。这些.so库有什么特别之处?.so文件是共享对象文件,它们是编译的共享库。它们通常用编译语言编写,如C、C++、Go等 Python作为一种解释语言,用它编写的代码往往速度较慢,因为解释器需要遍历正在执行的每一行代码,将其翻译成某种中间字节码,然

大多数标准库都是用Python.py文件编写的,但有些库在Unix上是用.so文件编写的,在Windows上是用.pyd文件编写的。例如,操作系统是用os.py编写的,而pyexpat是用pyexpat.cpython-36m-darwin.so编写的。这些.so库有什么特别之处?

.so
文件是共享对象文件,它们是编译的共享库。它们通常用编译语言编写,如
C
C++
Go

Python作为一种解释语言,用它编写的代码往往速度较慢,因为解释器需要遍历正在执行的每一行代码,将其翻译成某种中间字节码,然后最终执行字节码。这可能很慢

在关注性能的情况下,模块使用较低级别的语言编写,如
C
,然后将其编译为共享对象文件。这些文件可以由Python解释器加载,并像普通Python模块一样使用。因为这些模块已经编译成机器代码,所以它们可以直接执行,而无需经过解释器,因此它们比用Python编写的等效代码快得多


使用较低级别的语言(如
C
编写)也可以有效地使用内存,甚至可以释放全局解释器锁,以利用多核并行性。科学模块如 NoMPy, ScPy是这些例子。

由标签wiki, >。所以文件是C++,这可能是相关的:@ MSTST3RD3MON不是绝对C++文件是*.SO。甚至C文件也可以是*.so。因此,LIB可以使用C和C++文件生成。Python示例Numpy中的许多模块都是用C编写并导入到Python中的。@悬挂指针这是我的错,我的意思是
是用C++
编写的,不知怎么的,我忘了键入that@mast3rd3mon就python而言,这些都是用C编写的
,谢谢你的回答。numpy不是用Python编写的吗?我在安装目录中看到了所有的.py文件,其中一部分是Python,但核心部分是C(如果您在这里看到,您将看到C源代码:)。它还依赖于线性代数库,如BLAS,用于矩阵函数。这些库通常用Fortran实现,也可以通过.so机制加载。@MultiGoodwerse numpy不是用Python编写的,主要是用C++编写的。用C创建并导入Python的共享对象库也是如此。