проблема с модулем проверки python-python

#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 вызывающий объект вызывающего объекта и т.д.