Как найти название текущей функции?

1

Я знаю, что это кажется хромым, но я хотел бы иметь функцию получить доступ к ее собственному имени для печати ошибок или отладки сообщений. Тогда было бы легко стандартным способом начать распечатку:

print(__myname__,"is reporting the following..."

Я предпочитаю, чтобы это нужно было явно вводить имя каждый раз, потому что я часто хочу вырезать и вставлять такие вещи, и я хотел бы, чтобы любое изменение имени было автоматическим и, следовательно, более надежным.

Это похоже на другой вопрос, но мне нужно имя текущей функции, а не имя ее вызывающего.

Я отмечаю, что специальное название

__name__

в этом месте сообщается имя пакета, а не имя функции.

Теги:
python-3.x
debugging

1 ответ

3
Лучший ответ

Вы можете использовать модуль traceback для извлечения информации о стеке:

import traceback

def current_function_name():
    return traceback.extract_stack()[-2][2]    

def foo():
    print current_function_name()

>>> foo()
foo
  • 0
    Хотя это будет намного дороже строкового литерала.
  • 0
    Так как это для отладки, мне все равно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню