python constructing functions on the fly -


मेरे पास कई छोटे फ़ंक्शन हैं f1 , f2 , एफ 3 और एक फ़ंक्शन f

मुझे f को f1 के लिए एक "कंटेनर" f2 , f2 , f3 कुछ कार्यों को करने के लिए f2 , f3 : , प्रोग्राम कॉन्फ़िगरेशन के आधार पर (उदाहरण के लिए f1 और f2 या f1 और f3 या सभी तीन) और कुछ भी नहीं।

मुझे दो सरल समाधान मिलते हैं: फ़ंक्शन f में if कुछ जोड़ते हैं:

 < कोड> यदि configure_f1_f2: f1 () f2 ()  

दूसरा, मैं f में आपरेशनों की एक सूची जोड़ सकते हैं:

  ऑपरेशन के लिए ऑप: op ()  

और f1 , f2 , f3 में < कोड> ऑपरेशन या उन्हें हटा दें, कॉन्फ़िगरेशन के आधार पर।

लेकिन मैं किसी भी तरह से गतिशील कोड बना सकता हूं इसे 'एफ' से जोड़कर f1 , f2 और f3 की कॉल की कोई भी if S या सूची या के लिए 's है? मेरा मतलब है फ्लाई कोड हेरफेर की तरह कुछ इसलिए यदि मेरी कॉन्फ़िगरेशन " F1 और f3 " है, तो मैंने f का कोड सेट किया है ताकि यह

  एफ 1 () एफ 3 ()  

और जब मेरा कॉन्फ़िगरेशन " f2 और f3 " में बदल जाता है " से

  f2 () f3 ()  

क्या मैं फ़ंक्शन के कोड को इस तरह से हेरफेर कर सकता हूं?

यदि आप बहादुर हैं, तो आप स्ट्रिंग के रूप में एक फ़ंक्शन परिभाषा का निर्माण कर सकते हैं और इसे पास कर सकते हैं बयान। उदाहरण के लिए:

  func = "def f (): \ n" यदि config_f1: func + = "f1 () \ n" यदि config_f2: func + = "f2 () \ n" Globals में exec func ()  

इस बिंदु पर, आपको एक नया वैश्विक f () होना चाहिए जो कोड के उपयुक्त बिट को निष्पादित करता है।

< / div>

Comments

Popular posts from this blog

ios - Form Sheet content disappearing -

MySql variables and php -

c++ - an enclosing-function local variable cannot be referenced in a lambda body unless if it is in capture list -