software - python tutorial




एक फंक्शन को एक वेरिएबल पर असाइन करना (4)

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

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

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

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

def x():
    print(20)

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


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

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

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


जब आप किसी फंक्शन को एक वैरिएबल को असाइन करते हैं तो आप () का उपयोग नहीं करते हैं, लेकिन केवल फ़ंक्शन का नाम।

आपके मामले में def x(): ... , और वैरिएबल silly_var आप कुछ इस तरह से करेंगे:

silly_var = x

और फिर आप फ़ंक्शन को या तो कॉल कर सकते हैं

x()

या

silly_var()

वाक्य रचना

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 पर लौटेगा।





python