В python есть встроенные инструменты отладки, помогающие находить трудноулавливаемые ошибки в проектах. Как правило, именно их и используют современные IDE для отладки. Далее рассмотрим самые распространенные из них:
Модуль inspect
Модуль inspect позволяет получить информацию о текущей выполняющейся функции:
import inspect def func(): c = inspect.currentframe() print inspect.getframeinfo(c) def main(): func() if __name__ == '__main__': main()
Результат: Traceback(filename=’D:\\django\\site\\hello\\miniapps\\inspect.py’, lineno=15, function=’func’, code_context=[‘ print inspect.getframeinfo(c)\n’], index=0)
Модуль traceback
Выводит стэк вызовов в консоль:
import traceback def func(): traceback.print_stack() def main(): func() if __name__ == '__main__': main()
Результат:
File «inspect.py», line 13, in <module>
main()
File «inspect.py», line 10, in main
func()
File «inspect.py», line 7, in func
traceback.print_stack()
Если вы запускаете через IDE, а не через консоль, то результат может отличаться. Например, PyScripter вызывает кучу дополнительных методов из своего ядра для анализа кода.
Функция locals:
Это самый простой инструмент для понимания, выводит словарь всех локальных переменных метода, включая имя и значение переменной:
def func(): a=7 print locals()
Результат: {‘a’: 7}
Ссылки:
- Модуль inspect