Ответ 1
Иногда отладчик велик, но иногда использование операторов печати выполняется быстрее и проще в настройке и использовании.
Это может быть пригодно только для отладки с CPython (поскольку не все Pythons реализуют inspect.currentframe
и inspect.getouterframes
), но я считаю это полезным для сокращения ввода:
В 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('
.