在python标准库中寻找方法

fso*_*ety 3 python standard-library python-2.7

在我的python标准库(Python 2.7)中,我正在寻找模块中的特定方法.

例如,如果我打开re.py,我可以看到有特定的方法,如findall,search等.当我这样做时,同样明显dir(re).我可以清楚地看到上述方法.

类似地,当我这样做时dir(os),存在一个被调用的方法system,我通常使用它来调用os.system(cmd_name).

但是当我在寻找这种方法时os.py,它就不存在了.难道我做错了什么?请指导

use*_*ica 5

此功能未在os模块中定义,因此您将无法在中找到该定义os.py.它是os从另一个模块导入的; 哪个模块取决于您的操作系统.你可以查看:

>>> os.system.__module__
'nt'
Run Code Online (Sandbox Code Playgroud)

在这里,你可以看到,因为我在Windows上,os.system来自nt模块.


您可能会发现它os.system.__module__'nt'或者'posix',代表ntposix模块.那么问题是,这些模块在哪里定义?没有nt.pyposix.py.

事实证明,这些模块是用C实现的Modules/posixmodule.c.是的,nt模块是posixmodule.c,模块也是posix.有点奇怪.