В настоящее время я использую Icecream (
https://github.com/gruns/icecream) для печати переменных и другой информации в целях отладки и проверки. Я хотел бы иметь возможность отображать номер линии, откуда поступил вызов печати, без включения дополнительной информации. Мне не нужно использовать Icecream, если есть лучший вариант.
Приведенный ниже код может дать следующий результат.
Код: Выделить всё
1 - from icecream import ic
2 - test = 'hello'
3 - ic(test)
Это здорово, и я могу настроить префикс по своему усмотрению, но я также хочу иметь возможность включать номер строки, которая сгенерировал вывод. В Icecream есть функция, которая может это сделать, но она также выводит кучу другой информации, которая меня не интересует (см. ниже).
Код: Выделить всё
1 - from icecream import ic
2 - ic.configureOutput(prefix=f'Debug | ', includeContext=True)
3 - test = 'hello'
4 - ic(test)
Похоже, не существует встроенного способа просто показать номер строки (4 в приведенном выше примере) без остальной части информация (имя файла и родительская функция). Что я могу сделать, так это включить некоторый код в редактор префиксов, чтобы получить номер строки, но это просто дает мне номер строки функции ic.configureOutput(), что, я полагаю, имеет смысл, потому что именно эта функция создала запрос номера строки.
Код: Выделить всё
1 - from icecream import ic
2 - import sys
3 - def line_number():
4 - return sys._getframe().f_back.f_lineno
5 - ic.configureOutput(prefix=f'Debug:{line_number()} | ')
6 - test = 'hello'
7 - ic(test)
Есть ли способ (или какой-то другой метод) получить приведенный выше вывод, но иметь номер строки (строка 5 в пример выше) — это фактический номер строки в сценарии, который инициировал вызов (в приведенном выше примере это будет 7)?
Подробнее здесь:
https://stackoverflow.com/questions/746 ... am-print-o