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

इसका परिणाम स्ट्रिंग के रूप में "सेबजूइस" होना चाहिए।फ़ंक्शन नाम को उस फ़ंक्शन के अंदर से पाइथन में स्ट्रिंग के रूप में प्रिंट करने के लिए कैसे करें

+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

अच्छा, यह निश्चित रूप से संभव है। हम देखेंगे कि क्या वह कहता है कि समस्या क्या है। –

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) 
1

इस साइट में मुझे एक सभ्य स्पष्टीकरण दिया sys._getframe.f_code.co_name कैसे काम करता है जो फ़ंक्शन नाम देता है।

http://code.activestate.com/recipes/66062-determining-current-function-name/

+3

SO के लिए प्रतीक्षा करें! कृपया, स्पष्टीकरण प्रदान करने के बारे में सोचें, न केवल बाहरी लिंक को इंगित करें। –

संबंधित मुद्दे