Python 为什么可以';我是否使用inspect.getsource()查看列表的源代码?
我试图使用模块检索Python 为什么可以';我是否使用inspect.getsource()查看列表的源代码?,python,list,introspection,python-internals,Python,List,Introspection,Python Internals,我试图使用模块检索列表类的源代码,但没有成功: >>> import inspect >>> inspect.getsource(list) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/inspect.py", line 701, in getsource lines, lnum =
列表
类的源代码,但没有成功:
>>> import inspect
>>> inspect.getsource(list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/inspect.py", line 701, in getsource
lines, lnum = getsourcelines(object)
File "/usr/lib/python2.7/inspect.py", line 690, in getsourcelines
lines, lnum = findsource(object)
File "/usr/lib/python2.7/inspect.py", line 526, in findsource
file = getfile(object)
File "/usr/lib/python2.7/inspect.py", line 408, in getfile
raise TypeError('{!r} is a built-in class'.format(object))
TypeError: <module '__builtin__' (built-in)> is a built-in class
导入检查
>>>inspect.getsource(列表)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/inspect.py”,第701行,在getsource中
行,lnum=getsourcelines(对象)
文件“/usr/lib/python2.7/inspect.py”,第690行,在getsourcelines中
行,lnum=findsource(对象)
文件“/usr/lib/python2.7/inspect.py”,第526行,在findsource中
file=getfile(对象)
文件“/usr/lib/python2.7/inspect.py”,第408行,在getfile中
raise TypeError(“{!r}是内置类”。格式(对象))
TypeError:是一个内置类
我不明白这为什么不起作用——他说
如果无法检索源代码,将引发IOError
。。。但没有解释为什么会发生这种情况(而且在任何情况下,我得到的都是TypeError
,而不是IOError
)
在这种情况下,是否有其他方法可以通过编程检索对象的源代码?如果没有,我如何为自己找到源代码?虽然我可以检索用Python编写的对象的源代码,list
是用C编写的,因此没有可检索的Python源代码
如果您喜欢阅读C,您可以在其网站上找到Python的完整源代码。例如,各种版本的列表
的来源可以在以下位置找到:
- (最新开发版本)
。。。等等。在这里试试:List和所有内置类型一样,都是用C实现的,因此您无法通过内省获得代码。