重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
例如stat位于os module,那么可以help(os),出现如上图的结果,其中FILE就是其源文件位置,当然,如果这个module是c module,那就看不到相应的源码了。
创新互联于2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元瑶海做网站,已为上家服务,为瑶海各地企业和个人服务,联系电话:028-86922220
你提到os模块中没有stat这个函数,那时因为它在posix或者nt module中实现,os模块根据当前的操作系统来导入相应的实现。
pip install ipython
ipython
一般来说这样就能看到源代码了,不过numpy好像比较特殊,可以参考如下方法:
安装pipenv,
用pipenv打开numpy源码
$ pipenv --three
$ python3.6 -c "from pathlib import Path;fn='Pipfile';Path(fn).write_text(Path(fn).read_text().replace('pypi.org', 'mirrors.aliyun.com/pypi'))"
$ pipenv shell
$ pipenv install numpy
$ pipenv open numpy
众所周知,Python内建了许多函数模块,并且我们可能还会安装许多第三方模块等等。
下面以getpass为例查看其源代码。
1.help(getpass)
输入该命令找到file路径,并且可以查看其其提供的功能。
2.利用getpass.__file__查看位置
最后找到该文件,用记事本或其他编辑器打开即可。
3.PyCharm编辑器
在该类或方法上按住“ctr+鼠标左键”可以快速查看源代码。
4.dir(对象名)
该方法可以快速查看有哪些方法。
想要查看每个功能的解释,用help(type(对象名))
python学习网,大量的免费python视频教程,欢迎在线学习!
在 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;
/usr/lib/python2.7
2.7也可能是3.*
文件夹里面 很多 .Py 的文件 和 .pyc 的文件
前者是源文件,后者已经进行了预编译
这是模块,模块中设计的函数就在里面。
比如 re、socket、string。
内建函数可能也在某个文件中,没仔细找