निम्नलिखित कार्य करें:
def alpha(a):
return a**2
def beta(a):
return alpha(a)+1
beta
फ़ंक्शन का सोर्स कोड देखने के लिए हम यह कर सकते हैं:
import inspect
inspect.getsource(beta)
प्रश्न:
मैं beta
, alpha
के स्रोत कोड और beta
से बुलाए जा रहे सभी कार्यों को कैसे देख सकता हूं यदि मुझे केवल यह पता है कि मेरे फ़ंक्शन का नाम beta
है?
2 जवाब
तो... अपनी प्रारंभिक पोस्ट पर वापस जाएं और कार्यों को सीधे दुभाषिया में डालें। फिर:
for a in beta.__globals__:
if callable(beta.__globals__[a]):
print(a)
ध्यान दें कि ग्लोबल्स के पहले और बाद में डबल अंडरस्कोर होता है। यह आपको बीटा द्वारा कॉल करने योग्य कार्यों की एक सूची देगा। दिखाई देने वाला लोडर फ़ंक्शन उपयोगकर्ता परिभाषित नहीं है, इसलिए आप इसे अनदेखा कर सकते हैं (शायद कुछ भी जो डबल-अंडरस्कोर के साथ शुरू और समाप्त होता है, उस मामले के लिए)।
दो मॉड्यूल को एक .py फ़ाइल में सहेजें (उदाहरण के तौर पर test.py चुनें)। अब एक इंटरैक्टिव पायथन सत्र खोलें और:
python3
Python 3.6.9 (default, Sep 11 2019, 16:40:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
>>> import inspect
>>> print (inspect.getsource(test.beta))
def beta(a):
return alpha(a)+1
>>> print (inspect.getsource(test.alpha))
def alpha(a):
return a**2
यदि आप अजगर शुरू करते हैं तो यह काम नहीं करेगा, फिर कार्यों में टाइप करें क्योंकि निरीक्षण के लिए स्रोत कोड होना चाहिए जहां से फ़ंक्शन आए थे। स्रोत के बिना उपलब्ध आइटम पहले से ही बाइटकोड में संकलित हैं, इसलिए आपको कुछ भी पठनीय प्रदान नहीं करेगा।
alpha
नाम का एक ऐसा फंक्शन है। केवल beta
को देखकर आप देख सकते हैं कि एक और फ़ंक्शन है जिसे कहा जा रहा है (और भी हो सकता है), इस मामले में alpha
और आपको alpha
का स्रोत कोड भी आउटपुट करना चाहिए .
NameError: name 'name' is not defined
मिलता है,
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।