क्या पायथन में एक समारोह को अग्रेषित करना संभव है? मैं cmpघोषित होने से पहले अपने स्वयं के फ़ंक्शन का उपयोग करके एक सूची को सॉर्ट करना चाहता हूं ।
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
मैंने cmp_configsआह्वान के बाद विधि की परिभाषा रखने के लिए अपना कोड व्यवस्थित किया है । यह इस त्रुटि से विफल होता है:
NameError: name 'cmp_configs' is not defined
क्या cmp_configsइसका इस्तेमाल करने से पहले "घोषित" करने का कोई तरीका है ? यह मेरे कोड को साफ कर देगा?
मुझे लगता है कि कुछ लोग मुझे यह बताने के लिए लुभाएंगे कि मुझे अपने कोड का पुनर्गठन करना चाहिए ताकि मुझे यह समस्या न हो। हालांकि, ऐसे मामले हैं जब यह संभवतया अपरिहार्य है, उदाहरण के लिए जब पुनरावृत्ति के कुछ रूपों को लागू करना। यदि आप इस उदाहरण को पसंद नहीं करते हैं, तो मान लें कि मेरे पास एक ऐसा मामला है जिसमें किसी फ़ंक्शन को घोषित करना वास्तव में आवश्यक है।
इस मामले पर विचार करें जहां आगे की घोषणा करना पायथन में आवश्यक होगा:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
कहां end_conditionऔर end_resultपहले परिभाषित किया गया है।
क्या कोड को पुनर्गठित करने और हमेशा इनवोकेशन से पहले परिभाषाएँ रखने का एकमात्र समाधान है?