为什么在尝试获取Python内置源时inspect.getsource抛出TypeError?

时间:2018-07-04 06:17:41

标签: python python-3.x python-internals

Python内置对象和普通对象之间有什么区别?我们经常说在python中,一切都是对象。 例如,当我在Python 3.6中执行此操作时:

>>> import os, inspect
>>> inspect.getsource(os.scandir)
TypeError: <built-in function scandir> is not a module, class, method, function, traceback, frame, or code object

我有两个问题:

  1. 内置函数是对象吗?如果不是,这就是为什么getsource引发TypeError吗?
  2. 为什么我无法在python3 documentation中找到scandir作为内置文件?

1 个答案:

答案 0 :(得分:1)

您无法访问使用C API编写的内建程序和其他模块的源代码,因为它们没有Python源。

From the documentation for os.getsourcefile

  

返回定义对象的Python源文件的名称。 如果对象是内置模块,类或函数,则将失败并显示TypeError。