कहें कि मेरे पास fun(f, x, y)
फ़ंक्शन है जहां x और y संख्याएं हैं और f "1/x ** 2 + y"
जैसे फ़ंक्शन को निर्दिष्ट करने वाली स्ट्रिंग है।पायथन एक eval फ़ंक्शन को सहेज रहा है
मैं इस फ़ंक्शन का उपयोग f
बहुत कुछ कहना चाहता हूं, कुछ मिलियन बार कहता हूं, और x
और y
के मान प्रत्येक उपयोग के बीच बदलते हैं।
इसलिए eval(f)
पर कॉल करने से प्रत्येक बार फ़ंक्शन के मूल्य की गणना करने के विरोध में काफी समय लगता है। (लगभग 50x, मेरे मापा मामले में।)
क्या इस फ़ंक्शन को f
सहेजने का कोई तरीका है ताकि मुझे केवल eval
पर कॉल करना पड़े?
पीएस। कृपया eval
का उपयोग करने की (एन) सुरक्षा पर चर्चा न करें, मुझे इसके बारे में पता है, लेकिन यह कोड कहीं भी नहीं जा रहा है जहां कोई तीसरी पार्टी इसे चलाएगी, न ही यह मेरे प्रश्न के लिए प्रासंगिक है।
स्ट्रिंग के रूप में संग्रहीत करने के लिए आपको फ़ंक्शन की आवश्यकता क्यों है? –
यह उपयोगकर्ता द्वारा इनपुट किया जाएगा। – Torn
एक और विकल्प एक कोड ऑब्जेक्ट में अपनी अभिव्यक्ति को पूर्व-[संकलित] (https://docs.python.org/3/library/functions.html#compile) करना है, लेकिन जीन-फ्रैंकोइस की तकनीक लगभग दोगुनी है। –