#python
#python
Вопрос:
как написать программу для «определения номера строки вызова функции»?
модуль проверки python предоставляет опции для определения номера строки, но,
def di():
return inspect.currentframe().f_back.f_lineno
этот код на Python выводит номер текущей строки.
Ответ №1:
Почему бы не использовать inspect.stack()
?
def get_caller_lineno():
frame, _, lineno, _, _, _ = inspect.stack()[1]
return lineno
Комментарии:
1. Имя файла является второй частью кортежа:
frame, filename, lineno, … = inspect.stack()[1]
Ответ №2:
Я опубликовал оболочку для проверки с простой адресацией stackframe, охватывающей фрейм стека с помощью одного параметра spos
:
Например. pysourceinfo.PySourceInfo.getCallerLinenumber(spos=1)
где spos=0
это lib-функция, spos=1
это вызывающий объект, spos=2
вызывающий объект вызывающего объекта и т.д.