概览
导入包后,您可以使用__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)>
。
是否有标准方式知道源代码的哪个部分实现了这样的内置包,以便我能够读取和调试它?
答案 0 :(得分:2)
对于用C编写的Python模块,您可以随时在GitHub上查看CPython的源代码:https://github.com/python/cpython
通常你可以在Modules
文件夹中找到它们,但winreg
一个是特殊的,这里是:https://github.com/python/cpython/blob/master/PC/winreg.c