2009-10-08 14 views
8
def applejuice(q): 
    print THE FUNCTION NAME! 

Powinno to skutkować "pisklętem" jako łańcuchem.Jak wydrukować nazwę funkcji w postaci napisu w języku Python od wewnątrz tej funkcji

+1

Zobacz http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question-on-so/25128#25128 –

+1

Z odpowiedzi wybranego możemy wniosku, że był to rzeczywiście duplikat. Rzeczywiście, pytanie prawie dokładnie takie samo już istniało: http://stackoverflow.com/questions/251464/how-to-get-the-function-name- is-string-in-python –

+0

Nie zgadzam się, że jest to duplikat # 251464 - wydaje się, że to pytanie jest odwrotnością. –

Odpowiedz

19

Działa to również:

import sys 

def applejuice(q): 
    func_name = sys._getframe().f_code.co_name 
    print func_name 
2

Musisz wyjaśnić, jaki jest twój problem. Ponieważ odpowiedź na to pytanie brzmi:

print "applejuice" 
+2

może on znaczy: def func (anothah_func): print anothah_func's name – wilhelmtell

+0

Cóż, to zdecydowanie możliwe. Zobaczymy, czy on mówi, jaki jest problem. –

7
import traceback 

def applejuice(q): 
    stack = traceback.extract_stack() 
    (filename, line, procname, text) = stack[-1] 
    print procname 

Zakładam ten jest używany do debugowania, więc może chcesz przejrzeć inne procedury oferowane przez traceback module. Oni pozwalają wydrukować cały stos wywołań, ślady wyjątku, itp

3

Innym sposobem

import inspect 
def applejuice(q): 
    print inspect.getframeinfo(inspect.currentframe())[2] 
0
def foo(): 
    # a func can just make a call to itself and fetch the name 
    funcName = foo.__name__ 
    # print it 
    print 'Internal: {0}'.format(funcName) 
    # return it 
    return funcName 

# you can fetch the name externally 
fooName = foo.__name__ 
print 'The name of {0} as fetched: {0}'.format(fooName) 

# print what name foo returned in this example 
whatIsTheName = foo() 
print 'The name foo returned is: {0}'.format(whatIsTheName) 
Powiązane problemy