Что эквивалентно MATLAB dbstack в Python 3? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь преобразовать код, написанный в MATLAB, в python. В нем активно используется функция под названием dbstack. Эта функция возвращает имя вызывающей функции, ее имя файла и номер строки в файле, из которого она вызывается. Это также выполняется рекурсивно для всех файлов-предшественников, что означает, что это дает информацию о файле, который вызвал вызывающую функцию. Есть ли такой эквивалент для Python?

1 Ответ

0 голосов
/ 09 мая 2020

Модуль traceback - это, вероятно, то, что вы ищете. В нем нет какой-либо одной функции, которая полностью заменяет dbstack, но есть функции, которые в совокупности дают аналогичный опыт.

import traceback

# print to stderr
traceback.print_stack()

# grab stack lines and manually manipulate them
for line in traceback.format_stack():
  print(line)

Вы также можете найти аналогичную информацию в модуле inspect . Трассировки стека не являются его основным назначением, но они доступны там.

import inspect

# Each frame is a Named Tuple
# FrameInfo(frame, filename, lineno, function, code_context, index)
for frame in inspect.stack():
  print(frame)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...