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

Debe dar como resultado "applejuice" como una cadena.Cómo imprimir el nombre de la función como una cadena en Python desde el interior de esa función

+1

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

+1

De la respuesta que podemos elegir concluir que esto fue de hecho un duplicado. De hecho, ya existía una pregunta casi exactamente del mismo nombre: http://stackoverflow.com/questions/251464/how-to-get-the-function-name-as-string-in-python –

+0

No estoy de acuerdo en que se trate de una duplicado de # 251464 - parece que esta pregunta es la inversa en su lugar. –

Respuesta

19

Esto también funciona:

import sys 

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

Necesita explicar cuál es su problema. Debido a que la respuesta a su pregunta es:

print "applejuice" 
+2

tal vez quiere decir: def func (anothah_func): imprimir el nombre de anothah_func – wilhelmtell

+0

Bueno, eso definitivamente es posible. Veremos si él dice cuál es el problema. –

7
import traceback 

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

Asumo que esto se utiliza para la depuración, por lo que podría desea ver los otros procedimientos ofrecidos por el traceback module. Ellos permiten imprimir toda la pila de llamadas, los rastros de excepción, etc.

3

Otra forma

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) 
Cuestiones relacionadas