Как отобразить номер строки кода (без дополнительного контекста) в результатах печати Icecream?Python

Программы на Python
Ответить
Anonymous
 Как отобразить номер строки кода (без дополнительного контекста) в результатах печати Icecream?

Сообщение Anonymous »

В настоящее время я использую Icecream (https://github.com/gruns/icecream) для печати переменных и другой информации в целях отладки и проверки. Я хотел бы иметь возможность отображать номер линии, откуда поступил вызов печати, без включения дополнительной информации. Мне не нужно использовать Icecream, если есть лучший вариант.
Приведенный ниже код может дать следующий результат.

Код: Выделить всё

1 - from icecream import ic
2 - test = 'hello'
3 - ic(test)

Код: Выделить всё

ic| test: 'hello'
Это здорово, и я могу настроить префикс по своему усмотрению, но я также хочу иметь возможность включать номер строки, которая сгенерировал вывод. В Icecream есть функция, которая может это сделать, но она также выводит кучу другой информации, которая меня не интересует (см. ниже).

Код: Выделить всё

1 - from icecream import ic
2 - ic.configureOutput(prefix=f'Debug | ', includeContext=True)
3 - test = 'hello'
4 - ic(test)

Код: Выделить всё

Debug | test.py:4 in - test: 'hello'
Похоже, не существует встроенного способа просто показать номер строки (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)

Код: Выделить всё

Debug:5 | test: 'hello'
Есть ли способ (или какой-то другой метод) получить приведенный выше вывод, но иметь номер строки (строка 5 в пример выше) — это фактический номер строки в сценарии, который инициировал вызов (в приведенном выше примере это будет 7)?

Подробнее здесь: https://stackoverflow.com/questions/746 ... am-print-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»