मेरे पास एक फ़ंक्शन है, और जब इसे कॉल किया जाता है, तो मैं जानना चाहता हूं कि वापसी मूल्य क्या सौंपा जा रहा है - विशेष रूप से जब इसे अनपॅक किया जाता है टपल। तो:पता लगाएं कि रिटर्न वैल्यू कितने मूल्य अनपॅक किए जाएंगे
a = func() # n = 1
बनाम
a, b, c = func() # n = 3
मैं func
में n
के मूल्य का उपयोग करना चाहते हैं। inspect
या _getframe
के साथ कुछ जादू होना चाहिए जो मुझे ऐसा करने देता है। कोई विचार?
अस्वीकरण (क्योंकि यह आजकल आवश्यक प्रतीत हो रहा है): मैं जानता हूँ कि यह अजीब है, और बुरा व्यवहार, और उत्पादन कोड में नहीं किया जाना चाहिए। यह वास्तव में कुछ ऐसा लगता है जो मैं पर्ल में अपेक्षा करता हूं। मैं अपनी "वास्तविक" समस्या को हल करने के लिए एक अलग तरीके की तलाश नहीं कर रहा हूं, लेकिन मुझे उत्सुकता है कि मैंने उपरोक्त के लिए क्या पूछा है। इस चाल में से एक शांत उपयोग होगा:
ONE, TWO, THREE = count()
ONE, TWO, THREE, FOUR = count()
साथ
def count():
n = get_return_count()
if not n:
return
return range(n)
आप लौटाए गए मूल्य की लंबाई की जांच कर सकते हैं और उस लंबाई के आधार पर असाइनमेंट कर सकते हैं। –
इसका उद्देश्य क्या है? आप फ़ंक्शन से ही जान सकते हैं कि कितने आइटम लौटाए जाएंगे, या आप कॉलर में बस 'len (foo()) 'कर सकते हैं। मुझे लगता है कि यह एक समस्या की तलाश में समाधान का मामला है। –
@ अश्विनी चौधरी: नहीं, मैं अभी भी फ़ंक्शन 'func' में हूं और अभी तक कुछ भी वापस नहीं किया है, इसलिए मैं' लेन 'नहीं कह सकता। यदि कॉलर 'ए, बी = func()' करता है, तो मैं 2 तत्व वापस कर दूंगा। यदि कॉलर 'ए, बी, सी = func()' करता है, तो मैं वापस आऊंगा। मैं func में जानना चाहता हूं कि कॉलर रिटर्न वैल्यू के साथ क्या करेगा। – jdm