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

"applejuice"が文字列として返されるはずです。関数名をPythonの文字列として関数内から出力する方法

+1

あなたは私たちがすることができます選択した答えからhttp://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question-on-so/25128#25128 –

+1

を参照してください。これは確かに重複していると結論づけます。確かに、ほとんど同じ名前の質問が既に存在していました:http://stackoverflow.com/questions/251464/how-to-get-the-function-name-as-string-in-python –

+0

私はこれが#251464の複製 - この質問は逆であるようです。 –

答えて

19

また、これは動作します:

import sys 

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

問題の内容を説明する必要があります。あなたの質問への答えがあるので:

print "applejuice" 
+2

多分彼が意味すること:def func(anothah_func):anothah_funcの名前を印刷 – wilhelmtell

+0

これは間違いなく可能です。彼は問題が何であるかを尋ねる。 –

9
def applejuice(**args): 
    print "Running the function 'applejuice'" 
    pass 

または使用:また

myfunc.__name__ 

>>> print applejuice.__name__ 
'applejuice' 

、あなたがかもしれないので、私は、これはデバッグのために使用されていると仮定しhow-to-get-the-function-name-as-string-in-python

+0

upvote for 'myfunc .__ name__' – philshem

7
import traceback 

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

を見ますtraceback moduleで提供されている他の手順を調べてみてください。彼らはあなたがなど

3

全体コールスタック、例外トレース、別の方法を印刷してもらおう

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) 
関連する問題