все Python 3inspectфункция
inspect.getsourcefile()
исходный код
Путь к файлу .py, где определён объект, или None, если исходник найти не удалось.
Синтаксис
inspect.getsourcefile(object) -> str | None
Два разных «нет»: для встроенного модуля или функции на C — TypeError, а для объекта без файла на диске (код из exec(), модуль только с .pyc) — молчаливый None. Путь абсолютный и зависит от машины и виртуального окружения, поэтому сравнивать его строкой в тестах нельзя. У пакета это путь к __init__.py.
Примеры
import inspect, json, sys
def f():
pass
print(inspect.getsourcefile(f)) # → ? путь к example.py
print(inspect.getsourcefile(json).endswith('__init__.py')) # → True
ns = {}
exec('def z(): pass', ns)
print(inspect.getsourcefile(ns['z'])) # → None
try:
inspect.getsourcefile(sys)
except TypeError as e:
print(e) # → <module 'sys' (built-in)> is a built-in module
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности