2013-06-14 5 views
2

Рассмотрим следующий псевдокод:Получить имя внешней функции из внутренней функции в Python

func1(): 
    func2() #func2 is called inside func1 

Мой вопрос, в func2 я могу получить доступ к имени функции она была вызвана из? В этом случае func1? Благодаря!

+1

В 99% случаев нет никакой необходимости, чтобы действительно сделать что-то вроде этого. Переменные * имена * не должны каким-либо образом изменять вашу программу. Я бы посоветовал вам взглянуть на вашу проблему и посмотреть, есть ли другая альтернатива. – arshajii

+0

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

ответ

7
import inspect 

def func2(): 
    cframe = inspect.currentframe() 
    func = inspect.getframeinfo(cframe.f_back).function 
    print 'called from ' + func 

def func1(): 
    func2() 

func2() 
func1() 

Выход:

called from <module> 
called from func1 
+0

Точно, что я искал, спасибо! – TheoretiCAL

Смежные вопросы