1

我一直在查看 os 模块的代码(为了清楚起见,我正在查看文件 /usr/lib/python2.7/os.py),我一直在尝试找到代码mkdir 函数。据我所知,它来自“posix”模块,它是一个内置函数,与 range 或 max 相同:

>>> import posix
>>> posix.mkdir
<built-in function mkdir>
>>> max
<built-in function max>

我猜这些代码是用 C 语言编写的,python 解释器知道在哪里可以找到它们。有人可以解释一下,或者指出一些资源,这些内置函数是如何编写的,在哪里编写的,以及它们是如何与解释器集成的?

谢谢!

4

1 回答 1

6

在 POSIX 平台(以及 Windows 和 OS/2)上,os模块从 C 模块导入,在posixmodule.c.

该模块定义了一个posix_mkdir()函数,它在 Windows上的 POSIX 平台上包装mkdir()C 调用。CreateDirectoryW

模块将此函数与其他函数一起注册到模块PyMethodDef posix_methods结构中。导入模块时,Python 调用PyMODINIT_FUNC()函数,该函数使用该结构创建具有该posix_methods结构的适当模块对象,并向模块添加一系列常量(例如open()标志常量)。

请参阅使用 C 或 C++ 扩展 Python教程,了解 C 扩展的工作原理。

于 2013-05-17T21:00:17.860 回答