我一直在查看 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 解释器知道在哪里可以找到它们。有人可以解释这些内置函数的编写方式和位置以及它们如何与解释器集成,或者向我指出一些资源吗?
谢谢!
最佳答案
在 POSIX 平台(以及 Windows 和 OS/2)上,os
模块从 C 模块导入,在 posixmodule.c
中定义。 .
这个模块定义了一个 posix_mkdir()
function包装 mkdir()
C call在 POSIX 平台上,CreateDirectoryW
在 Windows 上。
模块在模块 PyMethodDef posix_methods
structure 中注册此函数以及其他函数。 .导入模块时,Python 调用 PyMODINIT_FUNC()
function ,它使用该结构创建具有 posix_methods
结构的适当模块对象,并向模块添加一系列常量(例如 open()
flag constants)。
参见 Extending Python with C or C++ C 扩展如何工作的教程。
关于Python:os.mkdir 的代码在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617809/