आप सभी को पायथन में एवल के बारे में जानना होगा



यह लेख आपको पायथन में एवल के विस्तृत और व्यापक ज्ञान के साथ प्रदान करेगा, यह कमियां है और उदाहरणों के साथ उपयोग करता है।

हर जगह जब आप अपने चारों ओर देखते हैं, तो आपको एक ऐसा एप्लिकेशन मिलेगा जो विशेष रूप से आपकी आवश्यकताओं को पूरा करने के लिए बनाया गया है। हालांकि कई प्रोग्रामिंग भाषाएं हैं जिनका उपयोग इन अनुप्रयोगों को विकसित करने के लिए किया जा सकता है, उनमें से अधिकांश का उपयोग करके बनाया गया है । पायथन अपनी महान विशेषताओं और बढ़ी हुई बहुमुखी प्रतिभा के साथ मेज पर अद्वितीय प्रसाद लाता है जो हर समय शक्तिशाली और सर्वोच्च उपयोगी होते हैं। पायथॉन के इस लेख में हम निम्नलिखित बातों पर चर्चा करेंगे:

पायथन में एवल क्या है?

पाइथन का निष्कासन समारोह वहां के सबसे दिलचस्प विकल्पों में से एक है। कुछ इसे हैक कहते हैं और कुछ इसे एक शॉर्टकट कहते हैं, लेकिन किसी भी तरह से आप इसका उपयोग कर सकते हैं, पायथन कोड के भीतर पायथन प्रोग्राम चलाने के लिए। बहुत अच्छा सही है?





जब आप eval फ़ंक्शन का उपयोग करते हैं, तो आप मूल रूप से दुभाषिया को चलाने का आग्रह कर रहे हैं जो eval फ़ंक्शन के ब्रैकेट के भीतर संलग्न है।

पायथनलोगो- पायथन में एवलपायथन में eval फ़ंक्शन का उपयोग करने का सिंटैक्स है:



eval (अभिव्यक्ति, ग्लोबल्स = कोई नहीं, स्थानीय = कोई नहीं)

उपरोक्त वाक्य रचना में,

सी ++ में नामस्थान
  1. अभिव्यक्ति: यह कोड का स्ट्रिंग या टुकड़ा है जिसे पायथन प्रोग्राम के भीतर ही पायथन अभिव्यक्ति के रूप में पार्स और मूल्यांकन किया जाता है।



  2. वैश्विक: यह वह शब्दकोश है जिसका उपयोग उपरोक्त उल्लिखित अभिव्यक्ति को निष्पादित करने के लिए उपलब्ध सभी वैश्विक तरीकों को परिभाषित करने के लिए किया जाता है। यह एक वैकल्पिक इकाई है और इसका उपयोग आपकी आवश्यकता पर निर्भर करता है।

  3. स्थानीय लोग: ग्लोबल्स के समान, यह एक और शब्दकोश है जिसका उपयोग उपलब्ध स्थानीय तरीकों के साथ-साथ चर को निर्दिष्ट करने के लिए किया जाता है।

इस फ़ंक्शन के उपयोग को बेहतर ढंग से समझने के लिए, नीचे दिए गए उदाहरण पर एक नज़र डालें।

गणित के आयात से * def secret_function (): रिटर्न 'सीक्रेट कुंजी 1234 है' def function_creator (): # एक्सप्रेशन का मूल्यांकन किया जाने वाला एक्सप्रेशन = raw_input ('फंक्शन एंटर करें (x के संदर्भ में):') एक्सप्रेशन x = में प्रयुक्त वेरिएंट int (raw_input ('x का मान दर्ज करें:')) # मूल्यांकन अभिव्यक्ति y = eval (expr) # प्रिंटिंग मूल्यांकन परिणाम प्रिंट ('y = {}'। format (y)) यदि __name__ == ''___ain__': function_creator। ()

उपरोक्त उदाहरण में, function_creator एक फ़ंक्शन है जो प्रोग्राम द्वारा निष्पादित होने पर उपयोगकर्ता द्वारा बनाई गई गणितीय अभिव्यक्तियों का मूल्यांकन करेगा।

आउटपुट:

फ़ंक्शन दर्ज करें (x के संदर्भ में): x * (x + 1) * (x + 2)

X: 3 का मान दर्ज करें

य = ६०

विश्लेषण

अब जब आप ऊपर साझा कोड देख चुके हैं, तो हम इसे थोड़ा और विश्लेषण करते हैं।

  1. उपरोक्त फ़ंक्शन एक्सप्रेशन x के किसी भी वेरिएबल को इसके इनपुट के रूप में लेगा।

  2. एक बार निष्पादित होने के बाद, उपयोगकर्ता को x के लिए एक मान इनपुट करने के लिए प्रेरित किया जाएगा, जिसके बाद ही कार्यक्रम उत्पन्न होगा।

  3. अंत में, पायथन कार्यक्रम पार्सिंग द्वारा eval फ़ंक्शन को निष्पादित करेगाविस्तार करेंएक तर्क के रूप में।

Eval की कमियां

पायथन के अन्य अंतर्निहित कार्यों के समान, eval भी कुछ कमियों के साथ आता है जो एक समस्या पैदा कर सकते हैं यदि कोई खाता नहीं है।

सीखने के लिए कठिन है

यदि आप उपरोक्त उदाहरण को देखते हैं, तो फ़ंक्शन का मुख्य कमजोरियों में से एक, function_creator यह है कि यह कार्यक्रम के भीतर किसी भी छिपे हुए मूल्यों को उजागर कर सकता है और हानिकारक फ़ंक्शन को भी कॉल कर सकता है क्योंकि डिफ़ॉल्ट रूप से eval कुछ भी निष्पादित करेगा जो इसके पेरेंटिस के भीतर निहित है।

इसे और समझने के लिए, नीचे दिए गए उदाहरण पर एक नज़र डालें।

उपयोगकर्ता से इनपुट

फ़ंक्शन दर्ज करें (x के संदर्भ में): secret_function ()

X: 0 का मान दर्ज करें

आउटपुट:

y = गुप्त कुंजी 1234 है

एक और खतरनाक स्थिति जो eval फ़ंक्शन का उपयोग करने के साथ आती है वह है ओएस मॉड्यूल आयात करना। जब आपने ओएस मॉड्यूल आयात किया है, तो यह उपयोगकर्ता से प्रमाणीकरण के बिना पायथन को आपके मूल सिस्टम पर मौजूद किसी भी फाइल को पढ़ने और लिखने की अनुमति देता है। ऐसे में अगर आप किसी एक को गलत समझते हैंकोड की लाइन, आपकी सभी मूल फाइलें नष्ट हो सकती हैं।

इन सभी कमियों का समाधान eval फ़ंक्शन की क्षमताओं को सीमित करने में निहित है।

पायथन में सुरक्षित ईविल बनाना

डिफ़ॉल्ट रूप से एवल किसी भी फ़ंक्शन को पार्स करने के विकल्प के साथ आता है, जिसमें इसकी पहुंच है या जो पहले से परिभाषित हो चुका है। अपने कोड को लिखते समय इसे ध्यान में रखते हुए, eval की क्षमताओं को काफी हद तक सीमित कर दिया जाएगा, जिससे यह सुनिश्चित हो जाएगा कि आप कुछ भी गलत नहीं करते हैं।

इस अवधारणा को और समझने के लिए, नीचे दिए गए उदाहरण पर एक नज़र डालें।

गणित के आयात से * def secret_function (): रिटर्न 'सीक्रेट कुंजी 1234 है' def function_creator (): # एक्सप्रेशन का मूल्यांकन किया जाने वाला एक्सप्रेशन = raw_input ('फंक्शन एंटर करें (x के संदर्भ में):') एक्सप्रेशन x = में प्रयुक्त वेरिएंट int (raw_input ('x का मान दर्ज करें:')) # सुरक्षित शब्दकोश में पासिंग चर x safe_dict ['x'] = x # अभिव्यक्ति का मूल्यांकन y = eval (expr, {'__builtins __': कोई नहीं), safe_dict) # मुद्रण मूल्यांकित परिणाम प्रिंट ('y = {}' '। स्वरूप (y)) यदि __name__ ==' __main__ ': # सुरक्षित तरीकों की सूची safe_list = [' acos ',' asin ',' atan ',' atan2 ',' ceil ',' कॉस ',' कोष ',' डिग्रियां ',' ई ',' एक्सप ',' फैब्स ',' फ्लोर ',' फमोड ',' फ्रीक्सप ',' हाइप ',' लेडैक्स ',' लॉग ',' 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # सुरक्षित तरीके का एक शब्दकोश बनाना safe -dict = dict ([k, लोकल ()। get (k, कोई नहीं)) के लिए k in safe_list]) function_creator ()

उपयोगकर्ता से इनपुट

फ़ंक्शन दर्ज करें (x के संदर्भ में): secret_function ()

X: 0 का मान दर्ज करें

आउटपुट:

NameError: name 'secret_function' परिभाषित नहीं है

जैसा कि आप निष्कासन की पहुंच को सीमित करके देख सकते हैं, एक गलत आउटपुट की संभावना जो हानिकारक साबित हो सकती है, को नकार दिया गया है।

इवल का उपयोग

जैसा कि ऊपर के खंडों में बताया गया है, कई सुरक्षा कारणों के कारण eval का आमतौर पर उपयोग नहीं किया जाता है। लेकिन फिर भी, विशेष रूप से उपयोग के मामले हैं जहां eval का उपयोग मददगार साबित होता है। इनमें से कुछ सबसे महत्वपूर्ण हैं।

  1. यदि आप चाहते हैं कि उपयोगकर्ता प्रोग्राम के आउटपुट को संशोधित करने के लिए अपने स्वयं के स्क्रिप्टलेट में प्रवेश करें, तो eval फ़ंक्शन का उपयोग करना मददगार साबित होगा।

  2. गणितीय प्रश्नों को हल करने के लिए अभिव्यक्ति लिखते समय आप eval का उपयोग कर सकते हैं क्योंकि यह अभिव्यक्ति पार्सर लिखने की तुलना में बहुत आसान है।

अब जब आप सभी के बारे में जानते हैं, तो हम आशा करते हैं कि आप अपने दैनिक उपयोग में उसी तरह का उपयोग करेंगे, जो लाभ के साथ-साथ कमियों को ध्यान में रखते हुए दिन की प्रोग्रामिंग के लिए होगा।

c ++ गोटो लाइन

इसके साथ, हम पायथन लेख में इस एवल के अंत में आते हैं। अपने विभिन्न अनुप्रयोगों के साथ अजगर पर गहराई से ज्ञान प्राप्त करने के लिए, आप कर सकते हैं 24/7 समर्थन और आजीवन पहुंच के साथ लाइव ऑनलाइन प्रशिक्षण के लिए।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? 'पायल में पायल' के टिप्पणी अनुभाग में उनका उल्लेख करें और हम आपके पास वापस आ जाएंगे।