如何了解有关内置模块的更多信息

时间:2016-08-29 14:49:56

标签: python built-in

概览

导入包后,您可以使用__path__属性查询源路径,并且大多数情况下您可以直接读取Python源代码。当有问题的模块类似于winreg时,问题出现了。如果我做

import winreg

print winreg.__path__

我将获得路径['d:\\virtual_envs\\py2711\\lib\\site-packages\\winreg'],然后我可以查看其源代码,我可以看到__init__.py正在执行的操作:

from __future__ import absolute_import
from future.utils import PY3

if PY3:
    from winreg import *
else:
    __future_module__ = True
    from _winreg import *

现在,因为我是一个非常好奇的人,我想更多地了解_winreg实施,所以我尝试做:

import _winreg

print winreg
print dir(_winreg)

我认为_winreg<module '_winreg' (built-in)>

是否有标准方式知道源代码的哪个部分实现了这样的内置包,以便我能够读取和调试它?

1 个答案:

答案 0 :(得分:2)

对于用C编写的Python模块,您可以随时在GitHub上查看CPython的源代码:https://github.com/python/cpython

通常你可以在Modules文件夹中找到它们,但winreg一个是特殊的,这里是:https://github.com/python/cpython/blob/master/PC/winreg.c