В настоящее время я создаю довольно сложную систему на Python, и когда я отлаживаю, я часто ставил простые операторы печати в нескольких сценариях. Чтобы сохранить обзор, я часто также хочу распечатать имя файла и номер строки, где расположен оператор печати. Я могу, конечно, сделать это вручную или с чем-то вроде этого:
from inspect import currentframe, getframeinfo
print getframeinfo(currentframe()).filename + ':' + str(getframeinfo(currentframe()).lineno) + ' - ', 'what I actually want to print out here'
который печатает что-то вроде:
filenameX.py:273 - то, что я на самом деле хочу распечатать здесь
Чтобы сделать его более простым, я хочу иметь возможность сделать что-то вроде:
print debuginfo(), 'what I actually want to print out here'
Поэтому я поставил его в какую-то функцию и попытался сделать:
from debugutil import debuginfo
print debuginfo(), 'what I actually want to print out here'
print debuginfo(), 'and something else here'
К сожалению, я получаю:
debugutil.py:3 - what I actually want to print out here
debugutil.py:3 - and something else here
Он печатает имя файла и номер строки, на котором я определил функцию, вместо строки, на которую я вызываю debuginfo(). Это очевидно, потому что код находится в файле debugutil.py.
Итак, мой вопрос на самом деле: Как я могу получить имя файла и номер строки, из которого вызывается эта функция debuginfo()? Все советы приветствуются!