बटन पैरामीटर "कमांड" घोषित होने पर क्यों निष्पादित किया जाता है?
पायथन में, बटन विजेट का "कमांड" पैरामीटर किसके लिए जिम्मेदार है कॉलबैक फ़ंक्शन को परिभाषित करना। हालाँकि, जब यह कॉलबैक फ़ंक्शन बटन घोषित करने पर तुरंत निष्पादित होता प्रतीत होता है, तो उपयोगकर्ता भ्रमित हो सकते हैं।
यह समस्या तब उत्पन्न होती है जब "कमांड" पैरामीटर को फ़ंक्शन ऑब्जेक्ट के बजाय फ़ंक्शन कॉल एक्सप्रेशन सौंपा जाता है। उदाहरण के लिए:
def Hello():
print("Hi there!")
Button(frame, text="Hello", command=Hello()) # Function call expression
इस कोड में, एक्सप्रेशन 'हैलो()' तुरंत हैलो फ़ंक्शन को कॉल करता है, और अपना रिटर्न वैल्यू लौटाता है। परिणामस्वरूप, बटन बनने से पहले कॉलबैक फ़ंक्शन निष्पादित होता है, जिसके परिणामस्वरूप "हाय देयर!" संदेश कंसोल पर मुद्रित किया जा रहा है। = "हैलो", कमांड = हैलो) # फ़ंक्शन ऑब्जेक्ट
फ़ंक्शन ऑब्जेक्ट अपने कोड का संदर्भ रखते हैं, जिसे कॉलबैक लागू होने पर निष्पादित किया जाएगा। इसके अतिरिक्त, यदि तर्कों को पारित करने की आवश्यकता है, तो लैम्ब्डा अभिव्यक्तियों को नियोजित किया जा सकता है:
Button(frame, text="Hello", command=Hello) # Function object
इस मामले में, लैम्ब्डा एक्सप्रेशन गुडनाइट ("मून") कॉल को लपेटता है, बटन क्लिक होने तक इसके निष्पादन में देरी करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3