2013-05-17 136 views
1

我一直在尋找os模塊的代碼(只是爲了清楚,我在看文件/usr/lib/python2.7/os.py),並且我一直在試圖找到代碼爲mkdir函數。從我可以告訴,它來自「POSIX」模塊,其內置的功能,相同範圍或最大:Python:os.mkdir的代碼在哪裏?

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

我猜這些是寫在C某處的代碼, python解釋器知道在哪裏找到它們。是否有人可以解釋,或者指向我一些資源,這些內置函數是如何以及在何處編寫的以及它們如何與解釋器集成?

謝謝!

回答

6

在POSIX平臺上(以及Windows和OS/2上),os模塊從C模塊中導入,在posixmodule.c中定義。

該模塊定義了一個posix_mkdir() function,它包含在POSIX平臺上的mkdir() C call,在Windows上的CreateDirectoryW

模塊在模塊PyMethodDef posix_methods structure中將此功能與其他功能一起註冊。當模塊被導入時,Python調用PyMODINIT_FUNC() function,該模塊使用該結構創建具有posix_methods結構的適當模塊對象,並向模塊添加一系列常量(如open() flag constants)。

請參閱Extending Python with C or C++關於C擴展如何工作的教程。