2012-04-27 19 views
32

करने के लिए एक समारोह नियत मान लीजिए कि मैं एक समारोहएक चर

def x(): 
    print(20) 

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

+0

मैं आपके सवाल का यह कटौती करने संपादित किया है का उपयोग करते हुए समारोह कहेंगे [केवल प्रासंगिक जानकारी।] (http://meta.stackexchange.com/a/128552/102937)। आपका उत्साह बहुत अच्छा है, लेकिन भविष्य में कृपया अपने वास्तविक प्रश्न को समझने पर ध्यान केंद्रित करें। –

+0

मैं भी उसे संपादित किया क्या तुम यहाँ क्या करना चाहते है * एक चर * लिए कोई फ़ंक्शन असाइन, नहीं * एक समारोह के लिए एक चर निर्दिष्ट *। –

उत्तर

64

आप बस फ़ंक्शन को कॉल नहीं है।

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

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

+1

प्रथम श्रेणी की वस्तुओं के रूप में कार्य, * ओह हाँ *। –

+0

बहुत बहुत धन्यवाद। अब तक, मैंने वास्तव में किसी भी तरह सोचा था कि मैं पाइथन में बहुत सभ्य था: डी – geekkid

+2

@geekkid: यह ध्यान देने योग्य है कि ** किसी भी ** ऑब्जेक्ट को एक फंक्शन की तरह "कॉल करने योग्य" बनाया जा सकता है। आपको बस ऑब्जेक्ट की '__call __()' विधि को परिभाषित करना है। –

10

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

आपके मामले में दिए गए def x(): ..., और चर silly_var आप कुछ इस तरह करना होगा:

silly_var = x 

और समारोह तो आप कॉल कर सकते हैं या तो साथ

x() 

या

silly_var() 
5

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