2013-05-17 3 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, который обертывает mkdir() C call на платформах POSIX, CreateDirectoryW на Windows.

Модуль регистрирует эту функцию вместе с другими в модуле PyMethodDef posix_methods structure. Когда модуль импортируется, Python вызывает PyMODINIT_FUNC() function, который использует эту структуру для создания объекта approriate с структурой posix_methods и добавляет к модулю ряд констант (таких как open() flag constants).

См. Учебник Extending Python with C or C++ о том, как работают C-расширения.

Смежные вопросы