Иногда отладчик хорош, но иногда использование операторов печати быстрее, и его легче настраивать и использовать повторно.
Это может быть подходящим только для отладки с CPython (поскольку не все Pythons реализуют inspect.currentframe
и inspect.getouterframes
), но я считаю это полезным для сокращения ввода:
In utils_debug.py:
import inspect
def pv(name):
record=inspect.getouterframes(inspect.currentframe())[1]
frame=record[0]
val=eval(name,frame.f_globals,frame.f_locals)
print('{0}: {1}'.format(name, val))
Тогда в вашем script.py:
from utils_debug import pv
С помощью этой настройки вы можете заменить
print("a_variable_name: %s' % a_variable_name)
с
pv('a_variable_name')
Обратите внимание, что аргументом pv
должна быть строка (имя переменной или выражение), а не само значение.
Чтобы удалить эти строки с помощью Emacs, вы можете
C-x ( # start keyboard macro
C-s pv('
C-a
C-k # change this to M-; if you just want to comment out the pv call
C-x ) # end keyboard macro
Затем вы можете вызвать макрос один раз с помощью C-x e
или тысячу раз с C-u 1000 C-x e
Конечно, вы должны быть осторожны, чтобы действительно удалить все строки, содержащие pv('
.