python tutorial एक फंक्शन को एक वेरिएबल पर असाइन करना




python tutorial (4)

मान लीजिए कि मेरे पास एक फ़ंक्शन है

def x():
    print(20)

अब मैं फ़ंक्शन को y नाम के एक वैरिएबल पर असाइन करना चाहता हूं, ताकि यदि मैं y उपयोग करता हूं तो यह फ़ंक्शन x फिर से कॉल करता है। अगर मैं बस असाइनमेंट y = x() करता हूं, तो यह None लौटाता है।


वाक्य रचना

def x():
    print(20)

मूल रूप से x = lambda: print(20) के समान है x = lambda: print(20) (हुड के तहत कुछ अंतर हैं, लेकिन अधिकांश व्यावहारिक उद्देश्यों के लिए, परिणाम समान हैं)।

वाक्य रचना

def y(t):
   return t**2

मूलतः y= lambda t: t**2 । जब आप किसी फ़ंक्शन को परिभाषित करते हैं, तो आप एक वैरिएबल बना रहे होते हैं, जिसमें फ़ंक्शन का मान होता है। पहले उदाहरण में, आप x को फंक्शन lambda: print(20) होने के लिए सेट कर रहे हैं lambda: print(20) । तो x अब उस फ़ंक्शन को संदर्भित करता है। x() फ़ंक्शन नहीं है, यह फ़ंक्शन की कॉल है। अजगर में, फ़ंक्शंस बस एक प्रकार का चर है, और आम तौर पर किसी भी अन्य चर की तरह इस्तेमाल किया जा सकता है। उदाहरण के लिए:

def power_function(power):
      return  lambda x : x**power
power_function(3)(2)

यह रिटर्न 8. power_function एक फ़ंक्शन है जो फ़ंक्शन को आउटपुट के रूप में देता है। जब इसे 3 पर कॉल किया जाता है, तो यह एक फ़ंक्शन देता है जो इनपुट को क्यूब करता है, इसलिए जब उस फ़ंक्शन को इनपुट 2 पर कॉल किया जाता है, तो यह 8. लौटाता है। आप cube = power_function(3) , और अब cube(2) 8 पर लौटेगा।


जब आप y=x() करते हैं तो आप वास्तव में फ़ंक्शन ऑब्जेक्ट x को कॉल करने के परिणाम के लिए y असाइन कर रहे हैं और फ़ंक्शन का कोई भी रिटर्न वैल्यू None । अजगर में फ़ंक्शन कॉल का उपयोग करके किया जाता है ()x to y को असाइन करने के लिए आप y उसी तरह कॉल कर सकते हैं जैसे आप x को फ़ंक्शन ऑब्जेक्ट x को y=x तरह असाइन करते हैं और y() का उपयोग करके फ़ंक्शन को कॉल करते हैं।


आप बस फ़ंक्शन को कॉल न करें।

>>>def x():
>>>    print(20)
>>>y = x
>>>y()
20

कोष्ठक अजगर को बताते हैं कि आप फ़ंक्शन को कॉल कर रहे हैं, इसलिए जब आप उन्हें वहां डालते हैं, तो यह फ़ंक्शन को कॉल करता है और x द्वारा लौटाए गए मान को असाइन करता है (जो इस मामले में None )।


इस मामले के लिए लैम्ब्डा उपयोगी होना चाहिए। उदाहरण के लिए,

  1. function y = x + 1 y=lambda x:x+1 बनाएँ

  2. फ़ंक्शन को कॉल करें y(1) फिर 2 लौटें।





python