Я знаю, что это кажется хромым, но я хотел бы иметь функцию получить доступ к ее собственному имени для печати ошибок или отладки сообщений. Тогда было бы легко стандартным способом начать распечатку:
print(__myname__,"is reporting the following..."
Я предпочитаю, чтобы это нужно было явно вводить имя каждый раз, потому что я часто хочу вырезать и вставлять такие вещи, и я хотел бы, чтобы любое изменение имени было автоматическим и, следовательно, более надежным.
Это похоже на другой вопрос, но мне нужно имя текущей функции, а не имя ее вызывающего.
Я отмечаю, что специальное название
__name__
в этом месте сообщается имя пакета, а не имя функции.
Вы можете использовать модуль traceback
для извлечения информации о стеке:
import traceback
def current_function_name():
return traceback.extract_stack()[-2][2]
def foo():
print current_function_name()
>>> foo()
foo