Ищу метод в стандартной библиотеке python

В моей стандартной библиотеке Python (Python 2.7), Я ищу конкретные методы в модулях.

Например, если я открою re.pyЯ могу видеть, что есть конкретные методы, такие как findall,search и т.д. То же самое очевидно, когда я делаю dir(re), Я ясно вижу вышеупомянутые методы.

Точно так же, когда я делаю dir(os)существует метод system, который я обычно называю, используя os.system(cmd_name),

Но когда я ищу этот метод под os.py, не существует. Я делаю что-то неправильно? Пожалуйста, руководство

1 ответ

Решение

Эта функция не определена в os модуль, так что вы не найдете определение в os.py, Импортируется в os из другого модуля; какой модуль будет зависеть от вашей операционной системы. Ты можешь проверить:

>>> os.system.__module__
'nt'

Здесь вы можете видеть это, так как я на Windows, os.system исходит от nt модуль.


Вы, вероятно, найдете это os.system.__module__ либо 'nt' или же 'posix', представляющий либо nt или же posix модуль. Тогда возникает вопрос: где эти модули определены? Нет никаких nt.py или же posix.py,

Оказывается, эти модули реализованы на C, в Modules/posixmodule.c, Да, nt модуль posixmodule.c и так posix модуль. Это странно.

Другие вопросы по тегам