怎样在Python中查询相关函数的源代码
1个回答
2016-07-19
展开全部
在 python 官网下载 Gzipped source tar ball, 解压缩后, 会发现 Lib/os.py 文件这行代码
from posix import *
可是没有文件叫 posix.py 啊, 到底在那 ? 其实 posix module 是 builtin 的其中一分子,如下示范:
>>> import sys
>>> print sys.builtin_module_names
(*__builtin__*, *__main__*, *_ast*, *_codecs*, *_sre*, *_symtable*, *_warnings*, *_weakref*, *errno*, *exceptions*, *gc*, *imp*, *marshal*, *posix*, *pwd*, *signal*, *sys*, *thread*, *zipimport*)
>>>
所以要去 Modules 目录查找 c 代码, 你会看见 posixmodule.c, 打开它看见这行代码:
{"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},
再寻找上面所得到的 posix_listdir method, 可以找到 listdir 源代码:
static PyObject *
posix_listdir(PyObject *self, PyObject *args)
{
/* XXX Should redo this putting the (now four) versions of opendir
in separate files instead of having them all here... */
#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
PyObject *d, *v;
HANDLE hFindFile;
BOOL result;
from posix import *
可是没有文件叫 posix.py 啊, 到底在那 ? 其实 posix module 是 builtin 的其中一分子,如下示范:
>>> import sys
>>> print sys.builtin_module_names
(*__builtin__*, *__main__*, *_ast*, *_codecs*, *_sre*, *_symtable*, *_warnings*, *_weakref*, *errno*, *exceptions*, *gc*, *imp*, *marshal*, *posix*, *pwd*, *signal*, *sys*, *thread*, *zipimport*)
>>>
所以要去 Modules 目录查找 c 代码, 你会看见 posixmodule.c, 打开它看见这行代码:
{"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},
再寻找上面所得到的 posix_listdir method, 可以找到 listdir 源代码:
static PyObject *
posix_listdir(PyObject *self, PyObject *args)
{
/* XXX Should redo this putting the (now four) versions of opendir
in separate files instead of having them all here... */
#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
PyObject *d, *v;
HANDLE hFindFile;
BOOL result;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询