पायथन eval() मेथड का उपयोग एक एक्सप्रेशन स्ट्रिंग को पायथन एक्सप्रेशन के रूप में पार्स करने और फिर प्रोग्राम के भीतर उस पायथन एक्सप्रेशन को चलाने के लिए किया जाता है।
सिंटैक्स
पायथन eval() मेथड का सामान्य सिंटैक्स है:
eval(expression, globals=None, locals=None)
जहां:
- expression: आवश्यक स्ट्रिंग पैरामीटर, यह वह एक्सप्रेशन स्ट्रिंग है जिसे पार्स किया जा रहा है और पायथन एक्सप्रेशन के रूप में निष्पादित किया जा रहा है।
- globals: वैकल्पिक पैरामीटर एक डिक्शनरी है जिसका उपयोग एक्सप्रेशन के लिए उपलब्ध एक्सप्रेशंस को निर्दिष्ट करने के लिए किया जाता है। यदि स्पष्ट रूप से उल्लेख नहीं किया गया है, तो '`__builtins__': None` एलिमेंट जैसे स्टैंडर्ड बिल्ट-इन मेथड्स उपलब्ध हैं।
- locals: वैकल्पिक पैरामीटर, eval() फंक्शन के लिए उपलब्ध लोकल वेरिएबल्स और मेथड्स को निर्दिष्ट करने के लिए उपयोग किया जाता है।
अब eval() मेथड को बेहतर ढंग से समझने के लिए, आइए इसे विभिन्न उदाहरणों के माध्यम से समझते हैं।
सरल eval() मेथड
str1 = 'Hello'
print(eval('str1 == "Hello"'))
print(eval('str1 + ", Python"'))
आउटपुट
True Hello, Python
यूजर इनपुट के साथ पायथन eval() मेथड
from math import *
for l in range(1, 3):
func = input("Enter Math Function to Evaluate:\n")
try:
print(eval(func))
except Exception as ex:
print(ex)
break
print('Done')
आउटपुट
Enter Math Function to Evaluate: abs(-42) 42 Enter Math Function to Evaluate: max(12, 3, 4, 2, 17) 17 Done
पायथन eval() globals और locals
यह समझने से पहले कि हमें eval() मेथड में कौन से फंक्शंस पास करने हैं, आइए ग्लोबल और लोकल स्कोप में मौजूद सभी फंक्शंस और वेरिएबल्स की सूची प्राप्त करें।
from math import *
def square_root(n):
return sqrt(n)
# वर्तमान ग्लोबल सिंबल टेबल को डिक्शनरी के रूप में प्रिंट करें
print('List of Global symbols:\n', globals())
# वर्तमान लोकल सिंबल टेबल को डिक्शनरी के रूप में प्रिंट करें
print('\nList of Local symbols:\n', locals())
# वर्तमान लोकल स्कोप में नामों की सूची प्रिंट करें
print('\nList of names in current local scope:\n', dir())
नीचे हम देख सकते हैं, हम eval फंक्शन में globals वैल्यू को खाली डिक्शनरी के रूप में निर्दिष्ट कर सकते हैं:
>>> print(eval('dir()', {}))
['__builtins__']
आइए एक और उदाहरण देखें जहां हम मैथ मॉड्यूल से केवल कुछ मेथड्स तक पहुंच की अनुमति दे रहे हैं।
from math import *
for l in range(1, 4):
func = input("Enter Math Function to Evaluate.\nAllowed Functions are: abs(x) and pow(x,y):\n")
try:
print(eval(func, {'absolute': abs, 'pow': pow}))
except Exception as ex:
print(ex)
break
print('Done')
आउटपुट
Enter Math Function to Evaluate. Allowed Functions are: abs(x) and pow(x,y): abs(-74) 74 Enter Math Function to Evaluate. Allowed Functions are: abs(x) and pow(x,y): pow(2,7) 128.0 Enter Math Function to Evaluate. Allowed Functions are: abs(x) and pow(x,y): sqrt(47) name 'sqrt' is not defined Done