我一直在浏览os模块的代码(只是为了清楚,我正在查看文件/usr/lib/python2.7/os.py),我一直在努力寻找mkdir函数的代码。据我所知,它来自'posix'模块,它是一个内置函数,与范围或最大值相同:
>>> import posix
>>> posix.mkdir
<built-in function mkdir>
>>> max
<built-in function max>
我猜这些代码是用C语言编写的,python解释器知道在哪里找到它们。有人可以解释,或者指出一些资源,这些内置函数的编写方式和位置以及它们如何与解释器集成?
谢谢!
答案 0 :(得分:6)
在POSIX平台(以及Windows和OS / 2)上,os
模块从posixmodule.c
中定义的C模块导入。
此模块定义了一个posix_mkdir()
function,它将mkdir()
C call包装在POSIX平台上,CreateDirectoryW
在Windows上。
模块在模块PyMethodDef posix_methods
structure中将此功能与其他功能一起注册。导入模块时,Python调用PyMODINIT_FUNC()
function,它使用该结构创建具有posix_methods
结构的approriate模块对象,并添加一系列常量(例如open()
flag constants)到模块。
请参阅有关C扩展如何工作的Extending Python with C or C++教程。