2009-10-08 13 views
8

Bu, "applejuice" dizgisi olarak sonuçlanmalıdır.İşlev adını, bu işlevin içinden Python'da bir dize olarak nasıl yazdırılır

+1

Eğer biz seçtik cevap itibaren http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question-on-so/25128#25128 –

+1

gör Bunun gerçekten bir kopya olduğu sonucuna var. Gerçekten, neredeyse aynı adı taşıyan bir soru zaten vardı: http://stackoverflow.com/questions/251464/how-to-get-the-function-name-as-string-in-python –

+0

Buna katılmıyorum # 251464 kopyası - Bu soru tersine tersi gibi görünüyor. –

cevap

19

Bu aynı zamanda çalışır:

import sys 

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

Sorununuzun ne olduğunu açıklamanız gerekir. Sorunuzun cevabı Çünkü:

print "applejuice" 
+2

belki de şu anlama gelir: def func (anothah_func): print anothah_func'nin adı – wilhelmtell

+0

Bu kesinlikle mümkündür. Sorunun ne olduğunu söyleyip söylemediğini göreceğiz. –

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

veya kullanım: Ayrıca

myfunc.__name__ 

>>> print applejuice.__name__ 
'applejuice' 

, öldürürsün yüzden, bu hata ayıklama için kullanılan varsayalım how-to-get-the-function-name-as-string-in-python

+0

'myfunc .__ name__' için daha fazlası – philshem

7
import traceback 

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

bkz traceback module tarafından sunulan diğer prosedürlere bakmak istiyorum. Onlar vb

3

tüm çağrı yığını, istisna izleri, başka yolu yazdırmak izin vereceğim

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) 
İlgili konular