Почему inspect.getsource выбрасывает TypeError при попытке получить исходный код для встроенного Python? - PullRequest
0 голосов
/ 04 июля 2018

В чем разница между встроенным питоном и обычным объектом? мы часто говорим, что в питоне все является объектом. например, когда я делаю это в 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. является встроенной функцией объекта? если нет, то почему этот метод вызывает SourceError?
  2. почему я не могу найти scandir в документации на python3 как встроенную?

1 Ответ

0 голосов
/ 04 июля 2018

Вы не можете получить доступ к источнику встроенных и других модулей, написанных с использованием C API, поскольку для них нет источника Python.

Из документации на os.getsourcefile

Возвращает имя исходного файла Python, в котором был определен объект. Это приведет к ошибке TypeError, если объект является встроенным модулем, классом или функцией.

...