Содржина на објавата
Как узнать кто вызвал функцию? Порой требуется выяснить, кто именно вызвал конкретную функцию? Конечно, можно запустить дебаг и выполнять построчно логику отслеживая откуда мы пришли в конкретную точку. Но это долго. Чтобы просто узнать имя функции которая вызвала текущую функцию можно сделать так. # myscript1.py import inspect def function1(): # распечатаем имя вызывающей функции print('Called from:', inspect.stack()[1][3]) def function2(): function1() function2() Запускаем python3 myscript1.py Called from: function2 Но так мы увидим лишь имя предыдущей функции. А как узнать полный список вызовов? Traceback удобен тем, что показывает цепочку вызовов, которая привела к ошибке. Но модуль traceback также позволяет распечатать стек вызовов не выбрасывая исключение. # myscript2.py import traceback def function1(): ... traceback.print_stack() ... def function2(): function1() function2() Запускаем файл python myscript2.py File "myscript.py", line 9, in <module> function2() File "myscript.py", line 7, in function2 function1() File "myscript.py", line 4, in function1 traceback.print_stack() #tricks